Я пытаюсь создать надстройку Google Таблиц, которая будет работать на боковой панели. Это мой первый, и мне тяжело работать в режимах аутентификации.
Это документ, который я использую для ссылки.
Когда кто-то в моей организации устанавливает сценарий, они видят заголовок меню, но надстройка не может загрузить элементы меню. Журнал показывает, что Exception: You do not have permission to call getScriptProperties at ...
. Это из библиотеки, которую я написал и на которую ссылаюсь в своем скрипте. Когда они используют его в документе, в котором я использовал его раньше, они могут видеть пункты меню.
Судя по этой диаграмме, похоже, что этот пользователь находится в режиме AuthMode.NONE, поскольку не может получить доступ к свойствам.
Это код, который у меня есть в верхней части моего файла.
function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
console.info('onOpen(e) fired')
var menu = SpreadsheetApp.getUi().createAddonMenu(); // Or DocumentApp or FormApp.
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
console.info("(e && e.authMode == ScriptApp.AuthMode.NONE)")
// Add a normal menu item (works in all authorization modes).
menu.addItem("Show Sidebar", "showSidebar");
menu.addToUi();
} else {
// Add a new menu (doesn't work in AuthMode.NONE).
log("not (e && e.authMode == ScriptApp.AuthMode.NONE)")
var topUI = SpreadsheetApp.getUi();
topUI.createMenu("Test Set Creator")
.addItem("Show Sidebar", "showSidebar")
.addToUi();
}
console.info(`The user is ${e.user}`)
console.info(`The user's auth mode is ${e.authMode}`)
console.info(`The source is ${e.source}`)
}
По сути, я хочу, чтобы пользователь установил надстройку, а затем смог использовать ее в любой электронной таблице в домене организации, а не только там, где она использовалась раньше. Мне сложно понять, как работают разные режимы аутентификации и как они меняются для каждого пользователя / для каждого листа. Если пользователь должен авторизовать надстройку при ее установке, почему бы ему не получить доступ к надстройке в новой электронной таблице, которую они открывают?
Вот еще несколько ресурсов, которые я пытался использовать: Google Doc onOpen не срабатывает при доступе к таблице