Я пытаюсь создать дополнение для Google Sheets. Когда лист открыт, скрипт должен создать пункт меню в дополнениях.
Элемент добавляется и работает, когда я открываю Лист, к которому он изначально привязан. При попытке протестировать его как надстройку с onOpen в качестве объявленной функции в моем скрипте, это всегда приводит к тому, что элемент не добавляется и регистрируется ошибка в консоли Google Chrome DevTools для листа, открытого для теста:
Скрипт Google Apps: К сожалению, произошла ошибка сервера. Пожалуйста, подождите немного и
попробуйте еще раз.
Эта ошибка не возникает, если я закомментирую метод onOpen.
Я попытался запустить его как дополнение следующим образом с Auth.none и Auth.limited:
- Оригинальная копия сценария, приложенная к исходному Листу.
- Оригинальная копия скрипта, работающая с отдельным Листом.
- Копия сценария в отдельном файле Google Scripts, работающем с другим Листом.
- Создание нового Sheet и ограниченного скрипта только с пустой функцией onOpen.
Все это приводит к приведенной выше ошибке, и когда я раскомментирую содержимое функций onOpen, имеющих код, кажется, что ни один из их кодов не запускается.
Вот код оригинальной копии, но имейте в виду, что я все еще получаю сообщение об ошибке, даже если содержимое закомментировано, и this утверждает, что даже если createMenu используется для дополнения, оно корректно обрабатывается Google Сценарий приложения:
function onOpen(e){
var menu = SpreadsheetApp.getUi().createAddonMenu(); // Or DocumentApp or FormApp.
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
// Add a normal menu item (works in all authorization modes).
menu.addItem("Show Sidebar", "showSidebar");
menu.addToUi();
} else {
// Add a new menu (doesn't work in AuthMode.NONE).
var topUI = SpreadsheetApp.getUi();
topUI.createMenu("Mail Merge")
.addItem("Show Sidebar", "showSidebar")
.addToUi();
}
}
Объект Logger также, похоже, не регистрирует мои сообщения при запуске скрипта как дополнение.