Я создал пользовательскую функцию в электронной таблице Google, которая заполняет ячейку списком путей к файлам, разделенным вертикальной чертой, на основе цикла, префикса, постфикса и некоторых ссылок на ячейки. Это отлично работает на самом листе.
Но я также опубликовал этот лист как CSV, используя функцию «Опубликовать в Интернете ...». Это также работает, если в моем браузере открыт сам лист.
Но как только я закрываю это окно браузера, примерно через 5 минут (я считаю, что это окно обновления публикации), эти ячейки заполняются "#NAME?" в загруженном CSV. Казалось бы, пользовательские функции не могут быть запущены в "безголовом" режиме опубликованного CSV-файла.
Это можно обойти?





Пользовательские функции не предоставляют значения опубликованному представлению, поскольку они выполняются в рамках лица, осуществляющего доступ. Для опубликованного представления это анонимный посетитель, не имеющий доступа к ресурсам скрипта (отсюда и ошибка #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
}
}