Я следовал инструкциям в Google: во-первых, когда onOpen запускается с AuthMode.NONE, я добавляю один элемент в меню, говоря пользователю: «Предоставить разрешения». Вызываемая функция - это функция для заполнения меню реальными записями (которые требуют доступа к свойствам пользователя).
Когда пользователь щелкает по нему, открывается небольшое окно веб-приложения от Google, запрашивающее учетную запись Google для подключения и спрашивающее, Пользователь позволяет дать разрешения для приложения. Как только это окно открывается, мой сценарий завершен - это не хорошо. Как я могу узнать, принял или отклонил пользователь?
Когда пользователь закончил, есть ли способ, чтобы мой скрипт вызывался снова, чтобы заполнить меню реальными записями? В настоящее время даже пользователю предоставлены разрешения, меню не изменяется, и мне приходится выбирать его второй раз, чтобы создать настоящее меню.
Вот мой код:
function onOpen(e) {
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
var menu = SpreadsheetApp.getUi().createAddonMenu();
menu.addItem('Grant permissions', 'createMenu');
menu.addToUi();
} else {
createMenu();
}
}
function createMenu() {
var up = PropertiesService.getUserProperties();
// now follows code to fill the menu according to user properties
}
Когда оно попадает в PropertiesService.getUserProperties()
, Google аутентификация запущена. Но, наконец, он не запускается снова через метод onOpen, чтобы воссоздать меню с реальными записями (за исключением того, что я закрываю и снова открываю электронную таблицу)
Тем временем мой AddOn был опубликован. При установке AddOn функция onInstall (e) вызывается NOT - в меню AddOn содержится только сгенерированная автоматически запись справки c. Также логирование, которое я добавил в функцию onInstall (e), не записывается в логирование gcp.