Пункт меню не появляется после публикации аддона Google
Мой скрипт Google листов работает хорошо, но как только он был опубликован, пунктов меню больше нет. Таким образом, вместо отображения кнопки "Пуск" в аддоне (которая отлично работает, когда он запускается как скрипт), он отображает только справку для моего аддона. У кого-нибудь есть идеи, почему это может иметь место?
//Runs when the addon is installed
function onInstall(e) {
onOpen(e);
}
//Creates menu entry in google ui when opened
function onOpen(e) {
SpreadsheetApp.getUi().createAddonMenu()
.addItem('Start', 'showSidebar')
.addToUi();
}
2 ответа
Вместо
SpreadsheetApp.getUi().createAddonMenu()
.addItem('Start', 'showSidebar')
.addToUi();
пытаться
var ui = SpreadsheetApp.getUi();
var menu = ui.createAddonMenu();
menu
.addItem('Start', 'showSidebar')
.addToUi();
Выше, потому что изменения, внесенные в то, как обрабатываются области полномочий для надстроек, могут привести к тому, что цепочечные операторы, подобные тому, который использовался в коде вопроса, не будут работать должным образом, и потому что примеры на https://developers.google.com/apps-script/guides/menus используют более одного оператора для создания меню.
Это может произойти, если вы используете экземпляр Spreadsheet глобально (т. е. вне функций):
var ss = SpreadsheetApp.getActiveSpreadsheet(); // or other variable name
Локально это работает, но когда скрипт публикуется как дополнение, возникают проблемы.
Решение состоит в том, чтобы повторить это объявление во всех функциях, где используется экземпляр, или передать его из других функций (и удалить его из глобальной области видимости).
Если вы проверите ошибку в отчетах об ошибках в Google Cloud, вы можете найти следующую информацию об ошибке:
Исключение: у вас нет разрешения на выполнение этого действия. в [неизвестная функция]