Ошибка аутентификации надстройки электронной таблицы - владелец документа и активный пользователь не совпадают
В моем дополнении к электронным таблицам у меня есть проверка владельца документа:
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.