getLastRow()在我的脚本中无法正常工作

时间:2018-12-27 00:48:40

标签: google-apps-script

好吧,这行不通:

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

1 个答案:

答案 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];
  }
}

我希望能有所帮助。如果您已经知道这一点,那么我很抱歉浪费您的时间。