Google apps script 为什么我得到的最后一行中有零。I';我没办法把它们拿走。如果我做最后一行,我会得到一个错误

Google apps script 为什么我得到的最后一行中有零。I';我没办法把它们拿走。如果我做最后一行,我会得到一个错误,google-apps-script,google-sheets,Google Apps Script,Google Sheets,问题:为什么最后一行是零。我无法移除它们。如果执行最后一行-1,则会出现错误。说明: var数据获取额外的空行。具有4个参数的函数的定义如下:getRange(行、列、numRows、numColumns)。在本例中,sheet.getLastRow()是5,因此您希望从第2行开始 getRange(2,1,5,3)。这将返回一个从第2行开始并考虑第5行的范围:2、3、4、5、6。但是第六行是空白的。为了将此因素考虑在内,您应该从getLastRow()中扣除一行,如下所示:lastRow=sh

问题:为什么最后一行是零。我无法移除它们。如果执行最后一行-1,则会出现错误。

说明:
var数据
获取额外的空行。具有4个参数的函数的定义如下:
getRange(行、列、numRows、numColumns)
。在本例中,
sheet.getLastRow()
5,因此您希望从第2行开始
getRange(2,1,5,3)
。这将返回一个从第2行开始并考虑第5行的范围:
2、3、4、5、6。但是第六行是空白的。为了将此因素考虑在内,您应该从
getLastRow()
中扣除一行,如下所示:
lastRow=sheet.getLastRow()-1


解决方案:
输出:

在脚本中,位于
var data=sheet.getRange(2,1,lastRow,3).getValues(),检索最后一行的下一行,因为该值是从第二行检索的。如果您不想在列“D”和“E”中包含具有
0
的行,那么如何修改为
var data=sheet.getRange(2,1,lastRow-2,3).getValues()
以及从
sheet.getRange(2,4,lastRow,2).setValues(totalsArray)
sheet.getRange(2,4,lastRow-2,2).setValues(totalsArray)
?但我无法理解你的目标。所以我把它作为评论发布。@Blackhart15很高兴它有帮助:)
 function addRowTotal() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("sheet4");
  var lastRow=sheet.getLastRow();
  var data = sheet.getRange(2,1,lastRow,3).getValues();

  var totalsArray=[];
  data.forEach(function(row){
    var name= row[0];
    var price= row[1];
    var qty = row[2];
    var tot=price*qty;
    var doz=price*12;
    row.push(tot,doz);
    //Logger.log (data);
    totalsArray.push([tot,doz]); 
    Logger.log(totalsArray);
  })
  sheet.getRange(2,4,lastRow,2).setValues(totalsArray);
}
 function addRowTotal() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("sheet4");
  var lastRow=sheet.getLastRow()-1;
  var data = sheet.getRange(2,1,lastRow,3).getValues();

  var totalsArray=[];
  data.forEach(function(row){
    var name= row[0];
    var price= row[1];
    var qty = row[2];
    var tot=price*qty;
    var doz=price*12;
    row.push(tot,doz);
    totalsArray.push([tot,doz]); 
  })
  
  sheet.getRange(2,4,lastRow,2).setValues(totalsArray);
}