Проблемы с пониманием режимов авторизации - PullRequest
0 голосов
/ 14 июля 2020

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

Это do c, который я использую для справки.

Когда кто-то в моей организации устанавливает сценарий, они видят заголовок меню, но надстройка не может загрузить элементы меню. В журнале указано, что Exception: You do not have permission to call getScriptProperties at .... Это из библиотеки, которую я написал и на которую ссылаюсь в своем скрипте. Когда они используют его на do c, где я использовал его раньше, они могут видеть пункты меню.

Судя по этой диаграмме, похоже, что этот пользователь находится в AuthMode.NONE, поскольку они не могут получить доступ к свойствам.

enter image description here

This is the code that I have at the top of my file.

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}`)
}

So essentially, I want a user to install the add-on and then be able to use it on any spreadsheet they want in the org's domain, not just where it's been used before. I'm having a hard time wrapping my mind around how the different Auth Modes work and how they change per user/per sheet. If the user has to authorize the add on when they install it, why wouldn't they have access to the add on in a new spreadsheet they open?

Here are some other resources I've tried to use: Google Do c onOpen не срабатывает при доступе к электронной таблице

1 Ответ

0 голосов
/ 15 июля 2020

Соображения

  1. Опубликованные надстройки автоматически добавят пункты меню в соответствующее меню надстройки:

Внимание: неопубликованные надстройки также могут создавать собственные меню верхнего уровня, но они автоматически перемещаются в меню «Надстройки», если надстройка опубликована и может не привести к желаемому пользовательскому опыту. Если вы собираетесь опубликовать sh надстройку, всегда используйте Ui.createAddonMenu () для определения меню надстройки.

Функция onOpen() предназначена для запуска AuthMode.NONE в первый раз для каждого документа. Если вы уже авторизовали надстройку для другого документа, при открытии нового документа вам больше не потребуется авторизация. Однако это не позволит вам запустить первую функцию onOpen() в AuthMode.LIMITED. Это означает, что вы всегда должны запускать аутентификацию, требующую операций, с помощью пунктов меню «Добавить».

Имейте в виду, что при втором открытии документа функция onOpen() будет запущена в AuthMode.LIMITED, это означает что обновление страницы сделает свое дело. Тем не менее, если вы нашли способ снова запустить функцию onOpen(), это поведение может быть получено автоматически.

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

Ссылки

Дополнительные меню

Жизненный цикл авторизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...