Для доступа к личным данным из встроенных или расширенных сервисов Google , Apps Script требует авторизации пользователя.
Как работает авторизация для сервисов Google
Когда скрипту требуется доступ к сервисам Google, он следует следующему общему процессу:
- Обнаружение : Apps Script сканирует скрипт, чтобы определить, какие службы он использует (например,
SpreadsheetAppилиGmailApp). - Определение области действия : На основе сканирования Apps Script определяет набор областей действия OAuth, необходимых для выполнения скрипта.
- Проверка авторизации : При запуске скрипта проверяется, авторизовал ли пользователь уже указанные области действия.
- Запрос пользователя : Если авторизация отсутствует, появится диалоговое окно с запросом на предоставление пользователем разрешения.
- Выполнение : После авторизации скрипт получает доступ к запрошенным данным для данного пользователя.
Права доступа и типы скриптов
Идентификатор пользователя, от имени которого запускается скрипт, а следовательно, и данные, к которым он имеет доступ, варьируется в зависимости от сценария выполнения скрипта, как показано в следующей таблице.
| Тип сценария | Скрипт выполняется следующим образом... |
|---|---|
| Автономное приложение , дополнение или приложение, привязанное к документам, таблицам, презентациям или формам. | Пользователь за клавиатурой |
| Пользовательская функция в электронной таблице | Анонимный пользователь ; однако ограничения квоты учитываются и при работе пользователя за клавиатурой. |
| Веб-приложение или гаджет Google Сайтов | Пользователь за клавиатурой или владелец скрипта, в зависимости от параметров, выбранных при развертывании приложения. |
| Устанавливаемый триггер | Пользователь, создавший триггер |
Предоставление прав доступа


Apps Script автоматически определяет области авторизации (например, доступ к файлам Google Sheets или Gmail) на основе анализа кода. Закомментированный код всё ещё может генерировать запрос на авторизацию. Если скрипту требуется авторизация, при его запуске вы увидите одно из диалоговых окон авторизации, показанных здесь.
Скрипты, которые вы ранее авторизовали, также запрашивают дополнительную авторизацию, если изменение кода добавляет новые сервисы. Скрипты могут не запрашивать авторизацию, если вы получаете к ним доступ как к веб-приложению, работающему под учетной записью владельца скрипта .
Отозвать права доступа
Чтобы отозвать доступ скрипта к вашим данным, выполните следующие действия:
- Перейдите на страницу разрешений для вашей учетной записи Google . (Чтобы в будущем переходить на эту страницу, посетите Google.com , затем щелкните изображение своей учетной записи в правом верхнем углу экрана. Далее щелкните «Моя учетная запись» , затем «Подключенные приложения и сайты» в разделе «Вход и безопасность», а затем «Управление приложениями ».)
- Щелкните по имени скрипта, разрешение которого вы хотите отозвать, затем нажмите «Удалить» справа, а затем «ОК» в появившемся диалоговом окне.
Ограничить область действия текущим документом
Если вы создаёте надстройку или другой скрипт, использующий службы электронных таблиц , документов , презентаций или форм , вы можете настроить диалоговое окно авторизации таким образом, чтобы оно запрашивало доступ только к файлам, в которых используется надстройка или скрипт, а не ко всем электронным таблицам, документам или формам пользователя. Для этого добавьте следующую аннотацию JsDoc в комментарий на уровне файла:
/**
* @OnlyCurrentDoc
*/
Противоположная аннотация, @NotOnlyCurrentDoc , доступна, если ваш скрипт включает библиотеку , объявляющую @OnlyCurrentDoc , но основной скрипт фактически требует доступа не только к текущему файлу.
Жизненный цикл авторизации для дополнений
Надстройки для Google Sheets, Docs, Slides и Forms, как правило, используют ту же модель авторизации, что и скрипты, привязанные к документу. Однако в некоторых случаях их функции onOpen(e) и onEdit(e) работают в режиме без авторизации, что создает дополнительные сложности. Для получения дополнительной информации см. руководство по жизненному циклу авторизации надстроек .
Ограничения на количество пользователей в приложении OAuth
На приложения, использующие OAuth для доступа к пользовательским данным Google, включая проекты Apps Script, распространяются ограничения на авторизацию. Подробности см. в разделе «Ограничения на количество пользователей в приложениях OAuth» .
Повторная аутентификация с помощью Apps Script
Apps Script не принуждает к повторной аутентификации в соответствии с настройками Google Cloud Services, которые вы задаете в настройках. Это связано с тем, что Apps Script может запускаться автоматически с помощью триггеров, которые работают без прямого взаимодействия с пользователем. Эти автоматические запуски не вызывают запросов на повторную аутентификацию. Ваше приложение Apps Script не будет автоматически запрашивать повторную аутентификацию по истечении указанного вами периода времени (например, 12 часов).
Укажите явные области видимости в манифесте.
Apps Script автоматически определяет необходимые области действия, сканируя код на наличие вызовов функций. Если вам нужен больший контроль, вы можете явно задать области действия в манифесте проекта ( appsscript.json ). Это рекомендуется для опубликованных скриптов, чтобы гарантировать использование минимально необходимых разрешений.
Инструкции см. в разделе «Установка явных областей видимости» .
Поиск неисправностей
- Ошибка «Требуется авторизация» при запуске триггера : Триггеры должны быть авторизованы пользователем, который их создал. Если вы добавляете код, требующий новых разрешений, вам необходимо вручную запустить функцию в редакторе скриптов, чтобы вызвать диалоговое окно авторизации.
- Области действия не обновляются : Если вы обновили код, но диалог авторизации не отображает изменения, попробуйте сохранить проект и обновить редактор. Если вы используете явные области действия в манифесте, убедитесь, что вы добавили новую область действия в массив
oauthScopes. - Предупреждение «Это приложение заблокировано» или «Приложение не проверено» : это происходит, если ваш скрипт использует конфиденциальные или ограниченные области действия и не был проверен Google. См. проверку клиента OAuth .