Авторизация для сервисов Google

Для доступа к личным данным из встроенных или расширенных сервисов Google, Google Apps Script требует авторизации пользователя.

Как работает авторизация для сервисов Google

Когда скрипту требуется доступ к сервисам Google, он следует следующему общему процессу:

  1. Обнаружение : Apps Script сканирует скрипт, чтобы определить, какие службы он использует (например, SpreadsheetApp или GmailApp ).
  2. Определение области действия : На основе сканирования Apps Script определяет набор областей действия OAuth, необходимых для выполнения скрипта.
  3. Проверка авторизации : При запуске скрипта проверяется, авторизовал ли пользователь уже указанные области действия.
  4. Запрос пользователя : Если авторизация отсутствует, появится диалоговое окно с запросом на предоставление пользователем разрешения.
  5. Выполнение : После авторизации скрипт получает доступ к запрошенным данным для данного пользователя.

Права доступа и типы скриптов

Идентификатор пользователя, от имени которого запускается скрипт, а следовательно, и данные, к которым он имеет доступ, варьируется в зависимости от сценария выполнения скрипта, как показано в следующей таблице.

Тип сценария Скрипт выполняется следующим образом...
Автономное приложение , надстройка для Google Workspace или приложение, привязанное к Google Docs, Google Sheets, Google Slides или Google Forms. Пользователь за клавиатурой
Пользовательская функция в электронной таблице Анонимный пользователь ; однако ограничения квоты учитываются и при работе пользователя за клавиатурой.
Веб-приложение или гаджет Google Сайтов Пользователь за клавиатурой или владелец скрипта, в зависимости от параметров, выбранных при развертывании приложения.
Устанавливаемый триггер Пользователь, создавший триггер

Предоставление прав доступа

Apps Script автоматически определяет области авторизации (например, доступ к файлам Google Sheets или Gmail) на основе анализа кода. Закомментированный код всё равно может генерировать запрос на авторизацию. Если скрипту требуется авторизация, при его запуске появляется диалоговое окно авторизации.

Скрипты, которые вы ранее авторизовали, также запрашивают дополнительную авторизацию, если изменение кода добавляет новые сервисы. Скрипты могут не запрашивать авторизацию, если вы получаете к ним доступ как к веб-приложению, работающему под учетной записью владельца скрипта .

Отозвать права доступа

Чтобы отозвать доступ скрипта к вашим данным, выполните следующие действия:

  1. Перейдите в раздел «Безопасность» в своем аккаунте Google .
  2. В разделе «Ваши подключения к сторонним приложениям и сервисам» нажмите « Посмотреть все подключения» .
  3. Выберите скрипт или приложение, для которого вы хотите отозвать доступ.
  4. Нажмите «Удалить все соединения с APP_NAME , затем нажмите «Подтвердить» .

Ограничить область действия текущим документом

Если вы создаёте надстройку или другой скрипт, использующий службы электронных таблиц , документов , презентаций или форм , вы можете настроить диалоговое окно авторизации таким образом, чтобы оно запрашивало доступ только к файлам, в которых используется надстройка или скрипт, а не ко всем электронным таблицам, документам или формам пользователя. Для этого добавьте следующую аннотацию JSDoc в комментарий на уровне файла:

/**
 * @OnlyCurrentDoc
 */

Противоположная аннотация, @NotOnlyCurrentDoc , доступна, если ваш скрипт включает библиотеку , объявляющую @OnlyCurrentDoc , но основной скрипт фактически требует доступа не только к текущему файлу.

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

Надстройки для таблиц, документов, презентаций и форм, как правило, используют ту же модель авторизации, что и скрипты, привязанные к документу. Однако в некоторых случаях их функции onOpen(e) и onEdit(e) работают в режиме без авторизации, что создает дополнительные сложности. Для получения дополнительной информации см. руководство по жизненному циклу авторизации надстроек .

Ограничения на количество пользователей в приложении OAuth

На приложения, использующие OAuth для доступа к пользовательским данным Google, включая проекты Apps Script, распространяются ограничения на авторизацию. Подробности см. в разделе «Ограничения на количество пользователей в приложениях OAuth» .

Повторная аутентификация с помощью Apps Script

Apps Script не принуждает к повторной аутентификации в соответствии с настройками сервиса Google Cloud. Это связано с тем, что Apps Script может запускаться автоматически с помощью триггеров, которые работают без прямого взаимодействия с пользователем. Эти автоматические запуски не вызывают запросов на повторную аутентификацию. Ваше приложение Apps Script не будет автоматически запрашивать повторную аутентификацию по истечении указанного периода времени (например, 12 часов).

Укажите явные области видимости в манифесте.

Apps Script автоматически определяет необходимые области действия, сканируя код на наличие вызовов функций. Если вам нужен больший контроль, вы можете явно задать области действия в манифесте проекта ( appsscript.json ). Это рекомендуется для опубликованных скриптов, чтобы гарантировать использование минимально необходимых разрешений.

Инструкции см. в разделе «Установка явных областей видимости» .

Поиск неисправностей

  • Ошибка «Требуется авторизация» при запуске триггера : Триггеры должны быть авторизованы пользователем, который их создал. Если вы добавляете код, требующий новых разрешений, вам необходимо вручную запустить функцию в редакторе скриптов, чтобы вызвать диалоговое окно авторизации.
  • Области действия не обновляются : Если вы обновили код, но диалог авторизации не отображает изменения, попробуйте сохранить проект и обновить редактор. Если вы используете явные области действия в манифесте, убедитесь, что вы добавили новую область действия в массив oauthScopes .
  • Предупреждение «Это приложение заблокировано» или «Приложение не проверено» : это происходит, если ваш скрипт использует конфиденциальные или ограниченные области действия и не был проверен Google. См. проверку клиента OAuth .