Как я могу не выполнять функцию при открытии листа?
Я сделал функцию в таблицах Google, которая запрашивает внешнюю ссылку. Я называю функцию так:
=functionimade(params)
Но я всегда открываю лист, вызывается функция и делается запрос. Как я могу это решить? Я хочу сделать запрос один раз
1 ответ
Ответ:
К сожалению, это невозможно.
Дополнительная информация:
Когда пользовательская функция вызывается в листе, значение ячейки является возвращением функции - это формула, которая ее вызывает. Возвращаемое значение функции вычисляется каждый раз, когда лист открывается, потому что единственное, что было сохранено, - это формула; не данные.
Кроме того, согласно документации, пользовательские функции не поддерживают.set*()
методы SpreadsheetApp
:
Служба электронных таблиц: только для чтения (может использовать большинство методов get*(), но не set*()).
Это означает, что вместо этого невозможно установить значение ячейки напрямую, используя .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);
}
Надеюсь, это поможет вам!
Ссылки:
- Пользовательские функции в Google Таблицах | Скрипт приложений
- Учебный класс
Range
| Скрипт Google Apps - Метод.setValue(value)