如何在SpreadSheetApp.openById()中使用getRange的四参数形式?

yas*_*asu 3 google-apps-script

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();
Run Code Online (Sandbox Code Playgroud)

第2行和第3行工作正常,但第4行给出错误"无法找到方法getRange(number,number,number,number)".它似乎getRange(number,..)只适用于活动表,而不适用于openById.

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

Waq*_*mad 6

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

SpreadsheetApp.getSheets[0].getRange(...); //index may vary
//or 
SpreadsheetApp.getSheetByName('sheetName').getRange(...)
Run Code Online (Sandbox Code Playgroud)


Hen*_*reu 5

当你直接在Spreadsheet对象而不是Sheet 1上获得范围时,就像你在第3和第4行所做的那样,你实际上是在第一张表上得到了范围.

这只是一个快捷方式,你应该真的getSheets()[0],甚至更好,getSheetByName并在其上调用getRange(Sheet对象).因为,正如您所指出的,这是一个捷径,而不是标准路径.例如,你没有getRange(int,int,int,int)的简称.