Как показывает ответ Купера, вы хотите использовать пакетные Range
методы getValues
и setValues
для манипулирования массивом JavaScript, согласно «рекомендациям»
Улучшениеиспользовать методы класса Array
, чтобы уменьшить доступ к вложенным свойствам, например map
(вернуть массив на основе исходного массива) или forEach
(сделать что-то длякаждый элемент в исходном массиве).Эти методы класса предоставляют вашей функции обратного вызова текущий элемент, индекс и исходный массив в качестве аргументов функции, если они необходимы.
Когда требуется поведение при коротком замыкании (остановите обработку, как только будет выполнено какое-либо условие),традиционный основанный на индексах цикл for
по-прежнему является королем.
function processArray() {
const wb = SpreadsheetApp.getActive();
const sheet = wb.getSheetByName('Name');
const startRow = 2, endRow = 905;
const startCol = 7, numCols = 2;
const rg = sheet.getRange(startRow, startCol, endRow - startRow + 1, numCols);
// Construct a new array based on the source array.
const result = rg.getValues().map(function (row) {
return [ 0, row[0] + row[1] ];
});
// (In this case we haven't changed the dimensions, so we could re-use `rg` .)
if (result.length) {
// sheet.getRange(someRow, someCol, result.length, result[0].length).setValues(result);
rg.setValues(result);
}
}
(Обратите внимание, что в настоящее время Apps Script не поддерживает использование в области блока const
, только переназначениезащита)