我对 Google 应用脚本完全陌生,正在努力动态生成范围。
我在工具栏中创建了一个调用函数的按钮。我希望该函数执行的操作是根据当前单元格设置事件范围,但仅使用行。因此,如果用户位于第 6 行中的任何列,它仍然只会将事件范围设置为 ("A6:G6")
到目前为止我所拥有的是
myFunction() {
var ss = SpreadsheetApp;
var onRow = ss.getActiveRange().getRow();
xl.setActiveRange(onRow, 1, 1, 7);
}
我知道最后一行不是它的工作原理,但这就是我无法弄清楚的。我想传入onRow作为变量,固定下面三个数字,分别代表列数、行数和列数。
最佳答案
将 Google Apps 脚本与电子表格结合使用时,您需要小心,不要混淆 SpreadsheetApp、电子表格、Sheet 和 Range 对象及其方法。在您的示例中,您滥用了 SpreadsheetApp 对象。
这里是一些示例代码,可以通过一个简单的菜单项来控制,完成您想要的操作。请注意,并非绝对有必要在 setRangeByRow()
中创建所有这些变量;为了清楚起见,这只是在这里完成的:
/**
* Runs when the document is opened.
* Sets up menu controls.
*/
function onOpen() {
SpreadsheetApp.getUi().createMenu('Test Range Set')
.addItem('Select Range', 'setRangeByRow')
.addToUi();
}
/**
* Acquires the row of the current active cell
* and sets the active range to the first 7
* columns of that row.
*/
function setRangeByRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var onRow = sheet.getActiveRange().getRow();
//Logger.log("ACTIVE ROW: "+onRow);
var range = sheet.getRange(onRow, 1, 1, 7);
sheet.setActiveRange(range);
}
关于google-apps-script - 在谷歌脚本中动态生成范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671512/