Google apps script getLastRow()不';在我的脚本中无法正常工作

Google apps script getLastRow()不';在我的脚本中无法正常工作,google-apps-script,google-sheets,Google Apps Script,Google Sheets,好吧,这不起作用: var range = mainList.getRange(1, 1, 50, 5).getValues(); var numRows = range.getLastRow()-1; 但这是真的 var numRows = mainList.getLastRow()-1; 范围显然是一个范围?那我为什么会有打字错误呢 TypeError:在对象数据中找不到函数getLastRow 在这种情况下,我们可以看出变量范围实际上是错误数据的2D数组,因此没有方法getLastRo

好吧,这不起作用:

var range = mainList.getRange(1, 1, 50, 5).getValues();
var numRows = range.getLastRow()-1;
但这是真的

var numRows = mainList.getLastRow()-1;
范围显然是一个范围?那我为什么会有打字错误呢

TypeError:在对象数据中找不到函数getLastRow


在这种情况下,我们可以看出变量范围实际上是错误数据的2D数组,因此没有方法
getLastRow()
。有一个
范围。但是长度

var range = mainList.getRange(1, 1, 50, 5).getValues();
var numRows = range.getLastRow()-1;
实际上,很难看出第二个示例的价值,因为我们不知道mainList来自哪里。看看

如果mainList是一个电子表格,那么我们可以转到,在示例中,我们可以通过指定工作表的名称(有时称为tab)来定义A1Notation中的范围,如下所示:

就我个人而言,我通常喜欢花时间做这样的事情:

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();
然后,您可以循环遍历值数组,如下所示:

for(var i=0;i<valuesArray.length;i++){
  for(var j=0;j<valuesArray[i].length;j++){
     var cellvalue=valuesArray[i][j];
  }
}

for(var i=0;iSorry,mainList是电子表格的名称。我本应将其更改为示例。您知道如何声明范围,使其成为一个范围而不是2D数组吗?感谢您花时间将其全部写出来。我正在努力处理数组与范围对象的关系,因为我试图使我的长而慢的脚本更快。
for(var i=0;i<valuesArray.length;i++){
  for(var j=0;j<valuesArray[i].length;j++){
     var cellvalue=valuesArray[i][j];
  }
}