3
var MasterSheet = SpreadsheetApp.openById("----------------");
var count = SpreadsheetApp.getActiveSheet().getRange(2, 3, 6, 4).getNumColumns();
var count = MasterSheet.getRange("C2:F7").getNumColumns();
var count = MasterSheet.getRange(2, 3, 6, 4).getNumColumns();

第 2 行和第 3 行工作正常,但第 4 行给出错误“找不到方法getRange(number,number,number,number)”。它似乎getRange(number,..)仅适用于 Active Sheet,不适用于openById.

这是一个错误吗?有谁知道使用这个符号的正确方法SpreadsheetApp.openById()

4

3 回答 3

6

由于您在通过触发器运行脚本时使用 openByID,因此不会有活动工作表。但是,您正试图从 ActiveSheet 中获取范围,即未定义的获取范围。您可以先激活工作表,然后使用 getActiveSheet ,也可以使用

SpreadsheetApp.getSheets[0].getRange(...); //index may vary
//or 
SpreadsheetApp.getSheetByName('sheetName').getRange(...)
于 2012-05-13T11:27:18.350 回答
5

当您直接在电子表格对象上而不是在第一张表上 getRange 时,就像您在第 3 行和第 4 行上所做的那样,您实际上是在第一张表上获得范围。

这只是一个快捷方式,您应该真正地 getSheets()[0],或者更好的是,getSheetByName 并在其上调用 getRange(Sheet 对象)。因为,正如您所指出的,这是一条捷径,而不是标准路径。例如,您没有 getRange(int,int,int,int) 的缩写。

于 2012-05-13T22:08:00.957 回答
0

您总是必须选择一张表才能使用 getRange

var count = MasterSheet.getRange("C2:F7").getNumColumns();
var count = MasterSheet.getRange(2, 3, 6, 4).getNumColumns();

在这里你错过了getActiveSheet()getSheetByName('sheetName')

于 2012-05-13T16:29:44.120 回答