J
1
2
3


这是代码:

function sumsald () {
   var ss = SpreadsheetApp.getActiveSpreadsheet ();
   var s1 = ss.getSheetByName ("rendPendForm");
   var dataRange = s1.getDataRange ();
   var lastrow = dataRange.getLastRow ();
   var values = s1.getRange (2.10, lastrow, 1) .getValues ();
        var sum = 0;           
        for (var i = 0; i <values.length; i ++) {
            result = values [i] [10] + sum;
            Logger.log (result);
     }
     s1.getRange (i + 1, 10) .setValue (result);
  }


结果脚本= # NUM!
Logger.log = NaN

预期6

谢谢,路易斯。

最佳答案

不知道示例中的J是第一行的列名还是值。无论如何,要获取从J列的第一行开始一直到索引lastrow上的行的值:

var values = s1.getRange (1, 10, lastrow, 1) .getValues ();


另外,在将数字相加时,忽略非数字值是有好处的。例如,如果您将标题行中的字符串与下面一行中的数字相加,则会在Javascript / GoogleScript中得到两者的串联字符串,而不是错误或忽略该字符串。仅当values[i][0]包含数字时才将其追加到总和(否则将0添加到总和即不执行任何操作):

result += typeof values[i][0] == 'number' ? values[i][0] : 0;


下面是完整的示例:

function sumsald () {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var s1 = ss.getSheetByName ("rendPendForm");
  var dataRange = s1.getDataRange ();
  var lastrow = dataRange.getLastRow ();
  var values = s1.getRange (1, 10, lastrow, 1) .getValues ();
  var result = 0;
  for (var i = 0; i <values.length; i ++) {
    result += typeof values[i][0] == 'number' ? values[i][0] : 0;
    Logger.log (result);
  }
  s1.getRange (i + 1, 10) .setValue (result);
}

09-27 01:28
查看更多