Авторизация для сервисов 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

Applications that use OAuth to access Google user data, including Apps Script projects, are subject to authorization limits. See OAuth application user limits for details.

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

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

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

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

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

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

  • "Authorization required" error when running a trigger : Triggers must be authorized by the user who created them. If you add code that requires new permissions, you must manually run a function in the script editor once to trigger the authorization dialog.
  • Области действия не обновляются : Если вы обновили код, но диалог авторизации не отображает изменения, попробуйте сохранить проект и обновить редактор. Если вы используете явные области действия в манифесте, убедитесь, что вы добавили новую область действия в массив oauthScopes .
  • "This app is blocked" or unverified app warning : This occurs if your script uses sensitive or restricted scopes and hasn't been verified by Google. See OAuth client verification .