Как сложить столбец диапазона в скрипте приложения Google - PullRequest
0 голосов
/ 27 сентября 2018
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 ожидается

Спасибо, Луис.

1 Ответ

0 голосов
/ 27 сентября 2018

Не уверен, что в этом примере 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...