Что это означает: когда пользователь посещает URL-адрес приложения, ему нужно будет использовать свои учетные данные, а не ваши. И приложение будет работать для них, только если их учетная запись получила доступ к базовым данным.

дал веб-приложение со скриптом Google Apps. Для функций, связанных с Google Диском, приложение требуетauth/drive.install (для интеграции с Drive UI) иauth/drive.file (для хранения некоторых данных, связанных с файлом, в свойствах связанного файла). Другие области примененияauth/urlshortener, auth/userinfo.email, а такжеauth/userinfo.profile, Насколько я понимаю, два последних необходимы для аутентификации.

Вышеуказанные области указаны в oauth dance в приложении. Однако при установке приложения пользователю предоставляются следующие области:

Просмотр и управление файлами на вашем Google Диске (соответствуетauth/drive scope)Управляйте своими короткими URL goo.gl (auth/urlshortener)и три других, которые соответствуютauth/script_* прицелы

Это соотносится с областями из свойств скрипта.

5 OAuth Scopes required by the script:

https: //www.googleapis.com/auth/drive
https: //www.googleapis.com/auth/script.external_request 
https: //www.googleapis.com/auth/script.scriptapp 
https: //www.googleapis.com/auth/script.storage 
https: //www.googleapis.com/auth/urlshortener

Очевидно, чтоauth/drive а такжеauth/urlshortner добавляются в результате использования расширенных служб Google, которые включены как в GAS IDE (Ресурсы> Расширенные службы Google), так и в консоли разработчика.

GAS IDE не позволяет указывать какую-либо область, более узкую, чем, например,auth/drive, Конфигурация SDK Google Apps Marketplace в консоли разработчика по какой-либо причине не позволяет добавлять какие-либо конкретные области. На самом деле, он позволяет добавлять, но не сохраняет.

Проблема:

Недавно Google ввел процедуру проверки для клиентов OAuth, запрашивающих конфиденциальные области OAuth иauth/drive определенно один из.

Мне не нужен весьauth/drive область, а также я не хочу, чтобы пользователи видели что-то вроде этого:Это приложение не проверено

Есть ли способ сузитьdrive сфера через GAS IDE или консоль разработчика?

Сам скрипт не используетauth/script_* функциональность. Они были добавлены как-то неявно, так как я использовал модуль сценария google apps для разработки. Мне не нужно разрешение пользователя для тех. Как от этого избавиться?

Есть обходные пути?

Ответы на вопрос(2)

Решение Вопроса

Я нашел следующие ссылки из Google полезнымиhttps://developers.google.com/apps-script/concepts/scopes (Опция «Установка явных границ») иhttps://developers.google.com/apps-script/concepts/manifests

Описание: Вам необходимо отредактировать файл манифеста appsscript.json. Это не видно по умолчанию в вашем списке файлов. Нажмите на меню «Вид» -> «Показать файл манифеста», чтобы сделать это.

Затем добавьте раздел «oauthScopes» в манифест с массивом, содержащим области, которые вы найдете в меню «Файл» -> «Свойства проекта» на вкладке «Области» (конечно, сделайте его правильным массивом json). Сократите избыточные области и / или поменяйте местами на менее разрешающие области (только чтение вместо полного доступа и т. Д.).

но в моем случае использования не сработал: чтение данных из электронной таблицы. Я нашел другое решение:
https://developers.google.com/apps-script/guides/services/authorization#manual_authorization_scopes_for_sheets_docs_slides_and_forms

Поместите это в начало вашего основного файла скрипта (Code.gs или другой):

/**
 * @OnlyCurrentDoc
 */

После этого вам не нужно заходить в манифест и т. Д., Но вы все равно можете поместить это в манифест, чтобы сохранить плотную крышку:

"oauthScopes": ["https://www.googleapis.com/auth/spreadsheets.currentonly"]
Почему oauthScopes - readonly way не работает для меня

Мой сценарий считывал только данные из электронной таблицы. Я использовал эту функцию:

 SpreadsheetApp.getActiveSpreadsheet()

Когда я поместил область только для чтения, как рекомендовано в выбранном ответе, я получил сообщение об ошибке на странице приложения, в котором говорится, что функция не может работать с областью только для чтения, ей необходим полный доступ. Вдобавок ко всему, при запуске приложения с новым пользователем, перед фактическим экраном получения разрешений, появляется страшная страница с опасностью, сообщающая, что приложение еще не проверено Google, и с синим цветом кнопки «вернуть меня в безопасное место». Это наверняка отпугнет большинство пользователей! Чтобы пройти, пользователь должен щелкнуть маленькую текстовую ссылку в левом нижнем углу, которая не очень интуитивно понятна. Это то же самое предупреждение было и там раньше, без проверки подлинности; это все еще продолжалось, потому что приложение все еще спрашивало у пользователя разрешение на чтение ВСЕХ их электронных таблиц Google. (так в основномoauthScopes не решил мою проблему и сделал ошибку моего приложения)

Но когда я ставлю те@OnlyCurrentDoc строки в верхней части кода вместо выполнения oauthScopes, а затем скрипт отказался от попыток получить доступ к пользователювсеи теперь даже страшная «непроверенная» страница исчезла. Мне просто нужно убедиться, что у пользователя есть доступ на чтение к исходной электронной таблице, и ссылка на приложение работает для него с гораздо менее навязчивым запросом разрешения: см. Этот скриншот:

И, тем не менее, он не может редактировать исходную электронную таблицу, потому что учетные данные пользователя имеют доступ только для чтения.

Дополнительный совет: опубликовать настройки:

Запустите приложение как:Пользователь, получающий доступ к веб-приложению

У кого есть доступ к приложению:Кто угодно

Что это означает: когда пользователь посещает URL-адрес приложения, ему нужно будет использовать свои учетные данные, а не ваши. И приложение будет работать для них, только если их учетная запись получила доступ к базовым данным.

Ваш ответ на вопрос