Пользовательская функция Google Sheets не работает при загрузке как опубликованной CSV
Я создал пользовательскую функцию в электронной таблице Google, которая заполняет ячейку разделенным на каналы списком путей к файлам на основе цикла, префикса, постфикса и некоторых ссылок на ячейки. Это прекрасно работает на самом листе.
Но я также опубликовал этот лист в формате CSV, используя функцию "Опубликовать в Интернете...". Это также работает, пока у меня в браузере открыт сам лист.
Но как только я закрою это окно браузера, примерно через 5 минут (я думаю, это будет окно обновления публикации), эти ячейки будут заполнены "#NAME?" в загруженном CSV. Казалось бы, пользовательские функции не могут быть запущены в "безголовом" режиме опубликованного файла CSV.
Это можно обойти?
1 ответ
Пользовательские функции не предоставляют значения опубликованному представлению, так как они выполняются в рамках доступа пользователя. Для опубликованного представления это анонимный посетитель без доступа к ресурсам скрипта (следовательно, #NAME
ошибка).
Решение состоит в том, чтобы реализовать статическое присвоение значений из функций скрипта. В зависимости от вашего использования электронных таблиц (вы не предоставляете точную информацию), on edit
или основанный на времени триггер может использоваться, чтобы вызвать настроенные вычисления.
Я подозреваю, что вам понадобится функция, которая запускается при редактировании ячеек, содержащих пути к файлам, и записи в заданный статический диапазон.
function onEdit(e) {
// Ensure the edited cell was the correct sheet and column.
var s = e.range.getSheet();
if(s.getName() == ... && e.range.getColumn() == ... ) {
// Your code called from here
}
}