Пункт меню не появляется после публикации аддона 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, вы можете найти следующую информацию об ошибке:

Исключение: у вас нет разрешения на выполнение этого действия. в [неизвестная функция]

Другие вопросы по тегам