Как я не могу выполнить функцию при открытии листа? - PullRequest
2 голосов
/ 30 апреля 2020

Я сделал функцию на гугл листах, которая делает запрос на внешнюю ссылку. Я называю эту функцию следующим образом:

=functionimade(params)

Но, всегда я открываю лист, вызывается функция и выполняется запрос. Как я могу решить это? Я хочу сделать запрос один раз

1 Ответ

3 голосов
/ 30 апреля 2020

Ответ:

К сожалению, это невозможно сделать.

Дополнительная информация:

Когда пользовательская функция вызывается в Лист, значение ячейки, возвращаемое функцией - это формула, которая ее вызывает. Возвращаемое значение функции вычисляется при каждом открытии листа, поскольку единственное, что было сохранено, это формула; не данные.

Кроме того, согласно документации , пользовательские функции не поддерживают .set*() методы SpreadsheetApp:

Служба электронных таблиц: Только чтение (можно использовать большинство методов get * (), но не устанавливать * ()).

Это означает, что вместо этого невозможно установить значение ячейка напрямую, используя .getRange(cell).setValue(functionimade(params)), так как область действия пользовательских функций не позволяет вам устанавливать ее напрямую.

Обходной путь:

В конце вашей функции вместо возврата значения вы можете установите содержимое с помощью вышеупомянутого метода .setValue(), только вам нужно будет указать ячейку в самой функции:

function functionimade(params) {
  var myReturnValue = // some cool code here

  var cell = 'A1'; // << change this
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(cell)
                                                        .setValue(myReturnValue);
}

Надеюсь, это вам пригодится!

Ссылки:

Вопросы по теме:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...