Функция onOpen() не работает

Моя функция включает добавление в документ меню и тостов. Я проверил, что триггер (onOpen) установлен также. Он работает только тогда, когда пользователь переходит в Инструменты, Script Manager, Run. У нас слишком много пользователей со слишком большим количеством фонов, чтобы потом узнать, как это сделать. Почему он не работает? (С использованием Chrome)

function onOpen()
{
  var menus = [{name: "Advance in Workflow", functionName:"sendEmail"}];

     SpreadsheetApp.getActiveSpreadsheet().addMenu("Auto Advance FG Workflow", menus);

  //sheet.toast(Notify/Remind users);
   sheet.toast("While you are here we kindly ask that you do not add, modify or remove     any columns.","Welcome - " + username,8);
 }

Спасибо,

Ответ 1

У меня была такая же проблема.

Я понял, что иногда Google создает какой-то кеш скриптов (у меня есть "тестовый" скрипт, и я обычно меняю его содержимое, а иногда скрипт запускается так, как если бы я этого не делал).

Итак, я решил, что функция onOpen() не работает, изменив имя функции и добавив триггер вручную.

Go to "Resources -> Current script's triggers…"

Перейдите в раздел "Ресурсы → Текущие триггеры сценария…"

Choose the function to run on open

Выберите функцию для запуска на открытом

Это работает как шарм здесь!

Обновленная информация о местоположении: from tool bar или from menu bar

затем

trigger select

Ответ 2

Это старый пост, но у меня была эта проблема и выяснение, почему в моем случае это не работает правильно: У меня в верхней части моего файла script была переменная, которая требовала некоторых разрешений и которая предотвращала корректный запуск script. Я видел, что OP называется var username = Session.getActiveUser().getUsername(); (для этого требуются авторизации, и это может быть причиной).

например: этот код не будет работать:

function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu("Exportation")
  .addItem("Lancer l'exportation", "exportationMenu")
  .addToUi();
}
var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant");

но этот будет работать:

function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu("Exportation")
  .addItem("Lancer l'exportation", "exportationMenu")
  .addToUi();
}

function whatever(){
  var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant");
...}

Ответ 3

В моем случае произошла эталонная ошибка, которая, хотя и не останавливала script полностью, она не открывала меню.

Я смог обнаружить эту ошибку только после запуска отладки script.

Google  script опция отладки

Ответ 4

Похоже, проблема может заключаться в том, что "лист" не определен, поэтому тост не работает.