Пользовательская функция 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
  }
}
Другие вопросы по тегам