Функция 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 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
Похоже, проблема может заключаться в том, что "лист" не определен, поэтому тост не работает.