好吧,这行不通:
var range = mainList.getRange(1, 1, 50, 5).getValues();
var numRows = range.getLastRow()-1;
但这确实
var numRows = mainList.getLastRow()-1;
范围显然是范围吗?那为什么我会收到typeError?
TypeError:在对象DATA DATA DATA DATA DATA中找不到函数getLastRow
答案 0 :(得分:2)
在这种情况下,我们可以从错误中看出变量范围实际上是2D数据数组,因此没有方法getLastRow()
。但是有range.length
。
var range = mainList.getRange(1, 1, 50, 5).getValues();
var numRows = range.getLastRow()-1;
实际上很难看到第二个示例的值,因为我们无法确定mainList的来源。看看mcve
如果mainList是电子表格,则可以转到the spreadsheet documentation here ,在示例here中,我们看到可以通过将工作表的名称(有时称为tab)指定为A1Notation来定义范围。所以:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("Invoices!A1:D4");
我个人通常喜欢花时间做这样的事情:
var spreadsheet = SpreadsheetApp.getActive(); // or SpreadsheetApp.openById('ssid'); I Google Drive the ids are the primary key to locating files not names. And you can get the id of a spreadsheet right of of the url whenever you open it up.
var sheet = spreadsheet.getSheetByName('sheetname');
var range = sheet.getRange(1,1,50,5);
var valuesArray = range.getValues();
然后您可以遍历values数组,如下所示:
for(var i=0;i<valuesArray.length;i++){
for(var j=0;j<valuesArray[i].length;j++){
var cellvalue=valuesArray[i][j];
}
}
我希望能有所帮助。如果您已经知道这一点,那么我很抱歉浪费您的时间。