GAS - «У вас нет разрешения на вызов SpreadsheetApp.openById» - PullRequest
0 голосов
/ 21 марта 2019

Один из моих сценариев использует SpreadsheetApp.openById(ID) для получения данных из электронной таблицы.Сценарию были предоставлены разрешения на открытие файла, и пользователь сценария имеет право на запись в файл.Однако иногда сценарий возвращает следующую ошибку:

You do not have permission to call SpreadsheetApp.openById. Required permissions: https://www.googleapis.com/auth/spreadsheets at [unknown function](Code:11)

В других случаях проблем нет, и сценарий работает отлично.Любая идея / помощь о том, как это исправить?

Пример сценария:

var spreadsheet = SpreadsheetApp.openById("1m65QVfk9Xx2zOwUxewdSjWCDK-g_jHj7ETFVFF0rjxY")

function myFunc() {
  sheet = spreadsheet.getActiveSheet()
  prepareHours()
  inputDisplays()
}

1 Ответ

0 голосов
/ 21 марта 2019

Вы не можете «дать сценарию разрешение на открытие файла», потому что сценарий не является автономным: пользователь выполняет сценарий.Если пользователь, который вызывает выполнение сценария, делает это способом, который не обеспечивает авторизацию - например, выполнение простого триггера, такого как функция с именем onOpen или onEdit, - тогда любые вызовы, которые требуют авторизация завершится неудачно с ошибкой на основе разрешений, такой как ошибка, которой вы делитесь.

Поскольку глобальные значения оцениваются для каждого экземпляра скрипта Apps, всегда рекомендуется избегать вызова вызовов API / Service в глобальной области.Кроме того, поскольку простые триггеры выполняются для любого пользователя с правами на редактирование документа, рекомендуется избегать использования методов, требующих пользовательских разрешений, в ситуациях с ограничениями AuthMode s.

  • Простые ограничения триггера
  • Исполнитель
  • Доступные услуги

    Предупреждение: Когда ваша функция onOpen(e) запускается, загружается весь скрипт и выполняются все глобальные операторы.Эти операторы выполняются в том же режиме авторизации, что и onOpen(e), и не выполняются, если режим запрещает их.Это предотвращает запуск onOpen(e).Если опубликованная надстройка не может добавить свои пункты меню, посмотрите в консоли JavaScript браузера, чтобы выяснить, не возникла ли ошибка, а затем изучите сценарий, чтобы узнать, вызывают ли функции или глобальные переменные onOpen(e) службы, которые не разрешены вAuthMode.NONE.

  • AuthMode

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