Ошибка аутентификации надстройки электронной таблицы - владелец документа и активный пользователь не совпадают

В моем дополнении к электронным таблицам у меня есть проверка владельца документа:

  var USEREMAIL = Session.getEffectiveUser().getEmail();
  var owner = SpreadsheetApp.getActive().getOwner().getEmail();
    if (USEREMAIL == owner) {
      menu.addItem('Owner menu', 'ownermenu');
      menu.addToUi();
    } else {
      menu.addItem('Not owner', 'notowner');
      menu.addToUi();
    } 

Это также запасной вариант для известной проблемы, когда пользователи входят в несколько учетных записей. Так что я недавно узнал, что даже если я владелец документа и только вошел в одну учетную запись, я все равно получаю меню Не владелец.

Проблема может быть исправлена ​​переустановкой дополнения, но все же, это ошибка Google? Я не вижу очевидной причины, по которой он работает должным образом после переустановки, не должно быть проблемой с моей стороны.

1 ответ

Решение

Адрес электронной почты владельца недоступен ни в каком контексте, который позволяет запускать сценарий без авторизации этого пользователя, например простой onOpen(e) или onEdit(e).

Поэтому вызов getOwner будет возвращать ноль внутри onOpen.

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