Как передать диапазон ячеек в качестве параметра функции в Apps Script

Мне нужно произвести какую то операцию над диапазоном ячеек (например А1:А10). Есть функция getRange() и вроде бы всё просто, но что если количество строк в таблице будет меняться и например диапазон изменится.

Пробовал так:

functon sumElements (range) {
 let ss = SpreadsheetApp.getActiveSpreadsheet();
 let currSheet = ss.getActiveSheet();
 let dinamicRange = ss.getRange(range).getValues;

}

но компилятор ругается на параметр range в getRange()


Ответы (1 шт):

Автор решения: ZxNuClear

Все прекрасно работает, если исправить ошибки:

  1. Не functon, а function (допускаю опечатку)
  2. Не ss.getRange(range), а currSheet.getRange(range)
  3. После .getValues нужны скобки ()

таким образом код выглядеть должен так:

function sumElements (range='A1') {
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let currSheet = ss.getActiveSheet();
  let dinamicRange = currSheet.getRange(range).getValues();
  Logger.log(dinamicRange);
}

ну и в качестве аргумента вы можете передавать свой диапазон. Пример вызова из другой функции:

function start () {
  sumElements('A1:A10');
}

UPD

Если вы хотите передавать диапазон из самой таблицы в качестве параметра, то в принципе не нужно .getRange(range), range уже будет содержать массив с переданными данными. Далее можете проводить с ним необходимые действия:

function sumElements (range) {
  const arr = range.map((x) => x * 2);
  return arr;
}

введите сюда описание изображения

→ Ссылка