Я получил массив из одного столбца из листа Google, например [[23],[25],[26],[89],[""],[45],[78],[62],[""],[123],[45],[68]]
Как я могу разделить его на пустые значения []
и получить суммы для каждого подмассива, например (163/185/236
) или более, длина массива может быть быть больше 1000, включая 20-50 пустых значений?
Я модифицировал скрипт из ответа. Но это не работает в моем случае. Я не понимаю, почему?
function getSums(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('TemplateTest');
var r = sh.getRange(1, 1, sh.getLastRow());
var arr = r.getValues(); //log: [[23],[25],[26],[89],[""],[45],[78],[62],[""],[123],[45],[68]]
var sums = [];
var sum = 0;
// iterate through the array
for (var i = 0; i < arr.length; i ++) {
if (arr[i].length == 0 || i == arr.length - 1) {
// empty array, push sum to array and reset
sums.push(sum);
sum = 0;
} else {
// array has values, sum them up and add to sum
sum += arr[i].reduce((a, b) => a + b);
}
}
Logger.log(sums) //log: [16345786212345]
}
Где я не прав и как это исправить?
DEMO:
function getSums(){
//var ss = SpreadsheetApp.getActiveSpreadsheet();
//var sh = ss.getSheetByName('TemplateTest');
//var r = sh.getRange(1, 1, sh.getLastRow());
var arr = [[23],[25],[26],[89],[""],[45],[78],[62],[""],[123],[45],[68]]
//var arr = r.getValues();
var sums = [];
var sum = 0;
// iterate through the array
for (var i = 0; i < arr.length; i ++) {
if (arr[i].length == 0 || i == arr.length - 1) {
// empty array, push sum to array and reset
sums.push(sum);
sum = 0;
} else {
// array has values, sum them up and add to sum
sum += arr[i].reduce((a, b) => a + b, 0);
}
}
console.log(sums) //log: [16345786212345]
}
getSums();