J
1
2
3
This is the code:
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);
}
Result script = # NUM!
Logger.log
= NaN
6 expected
Thanks, Luis.
J
1
2
3
This is the code:
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);
}
Result script = # NUM!
Logger.log
= NaN
6 expected
Thanks, Luis.
Share Improve this question edited Sep 27, 2018 at 16:50 TheMaster 51.2k7 gold badges72 silver badges99 bronze badges asked Sep 27, 2018 at 16:46 LuisLuis 351 silver badge8 bronze badges 3-
values[i][0]
– TheMaster Commented Sep 27, 2018 at 16:54 -
[i][10]
accesses the 11th column of each row. – tehhowch Commented Sep 27, 2018 at 17:04 - With values [i] [0] Script result set.Value blank Logger.log 1 0 / 2 0 / 3 0 – Luis Commented Sep 27, 2018 at 17:10
1 Answer
Reset to default 6Not sure if in the example the J
is the column name or value on the first row. Anyway, to get values starting from first row in column J all the way to row on index lastrow
:
var values = s1.getRange (1, 10, lastrow, 1) .getValues ();
In addition, when adding up the numbers its good to ignore non-number values. For example if you sum a string from a header row and a number from row below you get a concatenated string of the two in Javascript/GoogleScript, instead of an error or ignoring the string. This appends to the sum only if values[i][0]
contains a number (otherwise adds 0
to the sum i.e. does nothing):
result += typeof values[i][0] == 'number' ? values[i][0] : 0;
Below full example:
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);
}