我对Google App Scripts完全不熟悉,并且很难动态生成范围。
我在工具栏中创建了一个调用函数的按钮。我想要的功能是根据当前单元格设置活动范围,但仅使用行。因此,如果用户在第6行的任何列上,它仍然只会将有效范围设置为(“A6:G6”)
到目前为止我所拥有的只是
myFunction() {
var ss = SpreadsheetApp;
var onRow = ss.getActiveRange().getRow();
xl.setActiveRange(onRow, 1, 1, 7);
}
我知道最后一行不是它的工作方式,但我这是我无法弄清楚的。我想传入onRow作为变量,并修复了以下三个数字,分别代表列号,行数和列数。
答案 0 :(得分:2)
在使用带有电子表格的Google Apps脚本时,您需要小心不要混淆SpreadsheetApp,电子表格,工作表和范围对象及其方法。在您的示例中,您滥用了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);
}