Проблемы с разрешениями в надстройке листов Google - PullRequest
0 голосов
/ 13 июня 2019

У меня есть надстройка, которая манипулирует данными в Google Sheets.Это работает нормально, но я все еще вижу ошибки в журналах Stackdriver для других пользователей.

Я не могу воспроизвести эти ошибки во время моих тестов, но проблемы все еще существуют для некоторых пользователей.Использование try {} catch {} не решает проблему, а просто позволяет избежать получения сообщений об ошибках в журналах Stackdriver.

Вот мой код:

appsscript.json

{
  "timeZone": "Europe/Moscow",
  "dependencies": {
    "enabledAdvancedServices": [{
      "userSymbol": "Sheets",
      "serviceId": "sheets",
      "version": "v4"
    }]
  },
  "oauthScopes": [
"https://www.googleapis.com/auth/script.container.ui",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.scriptapp",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/userinfo.email"
  ],
  "exceptionLogging": "STACKDRIVER"
}

Code.gs

function onOpen(e) {
    var ui = SpreadsheetApp.getUi();
    SpreadsheetApp.getUi()
        .createAddonMenu()
        .addItem('Make some stuff', 'showMakesomeStuff')
        .addToUi();
    if (e && e.authMode !== ScriptApp.AuthMode.NONE) { // It looks that the problem is here. 
        myLinkCells();
        google_analytics('file opened');
    }
}

function myLinkCells() {
    var allTriggers =[];
    var allTriggers = ScriptApp.getProjectTriggers(); \\ This line triggers error; 
    var editTriggerSet = false;
        for (var i = 0; i < allTriggers.length; i++) {
            if (allTriggers[i].getEventType() == ScriptApp.EventType.ON_EDIT) 
            {
                editTriggerSet = true;
                break;
            }
        }
    if (editTriggerSet == false) ScriptApp.newTrigger("callOnEdit").forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create();
    }

function google_analytics(url) {
    UrlFetchApp.fetch('https://ssl.google-analytics.com/collect', OPTIONS); 
// This line also cause error. FYI OPTIONS is defined, but not in this example. 
}

Примеры сообщений об ошибке: «У вас нетразрешение на вызов UrlFetchApp.fetch. Требуемые разрешения: https://www.googleapis.com/auth/script.external_request" или «У вас нет разрешения на вызов ScriptApp.getProjectTriggers.Требуемые разрешения: https://www.googleapis.com/auth/script.scriptapp".

Я просмотрел существующие вопросы, но не смог найти ничего похожего.

1 Ответ

0 голосов
/ 13 июня 2019

Кажется, я прибил ошибку. Это не имеет ничего общего с разрешением, но с проверкой AuthMode Я заменил:

if (e && e.authMode !== ScriptApp.AuthMode.NONE) { // It looks that the problem is here. 
        myLinkCells();
        google_analytics('file opened');
    }

с

if (e && e.authMode == ScriptApp.AuthMode.NONE) {
            \\Do nothing; 
        }
        else
        {
            myLinkCells();
            google_analytics('file opened');

    }

Сейчас жду логи для просмотра.

UPDATE. Согласно https://developers.google.com/gsuite/add-ons/concepts/editor-auth-lifecycle UrlFetchApp.fetch не будет работать даже в AuthMode.LIMITED.

Также кажется невозможным установить триггер из функции onOpen ().

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