Если вы разрабатываете для скрипта пользовательский интерфейс, опубликуйте его как веб-приложение. Например, скрипт, позволяющий пользователям назначать встречи с сотрудниками службы поддержки, лучше всего представить в виде веб-приложения, чтобы пользователи могли получать к нему доступ непосредственно из своих браузеров.
Как автономные скрипты , так и скрипты, привязанные к приложениям Google Workspace , могут быть преобразованы в веб-приложения при условии соблюдения следующих требований.
Требования к веб-приложениям
Скрипт можно опубликовать в качестве веб-приложения, если он соответствует следующим требованиям:
- Он содержит функции
doGetилиdoPost. - Функция возвращает объект
HtmlOutputслужбы HTML или объектTextOutputслужбы Content .
Параметры запроса
Когда пользователь заходит в приложение или программа отправляет приложению HTTP GET запрос, Google Apps Script запускает функцию doGet . Когда программа отправляет приложению HTTP POST запрос, Apps Script запускает вместо этого doPost . В обоих случаях аргумент e представляет собой параметр события, который может содержать информацию о любых параметрах запроса. Структура объекта события показана в следующей таблице:
| Поля | |
|---|---|
e.queryString | Значение части URL-адреса, содержащей строку запроса, или name=alice&n=1&n=2 |
e.parameter | Объект, содержащий пары ключ/значение, соответствующие параметрам запроса. Для параметров, имеющих несколько значений, возвращается только первое значение. {"name": "alice", "n": "1"} |
e.parameters | Объект, похожий на {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo | Путь URL после |
e.contextPath | Не используется, всегда пустая строка. |
e.contentLength | Длина тела запроса для POST-запросов или 332 |
e.postData.length | Аналогично 332 |
e.postData.type | MIME-тип тела POST-запроса text/csv |
e.postData.contents | Содержимое текста POST-запроса Alice,21 |
e.postData.name | Всегда используется значение "postData" postData |
Передайте такие параметры, как username и age в URL-адрес, например, следующий:
https://script.google.com/.../exec?username=jsmith&age=21
Отобразите параметры следующим образом:
function doGet(e) {
var params = JSON.stringify(e);
return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}
В приведенном выше примере doGet возвращает следующий результат:
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
Следующие имена параметров зарезервированы системой и не должны использоваться в параметрах URL-адреса или телах POST-запросов:
-
c -
sid
Использование этих параметров может привести к ответу HTTP 405 с сообщением об ошибке «Извините, запрошенный вами файл не существует». Если возможно, обновите свой скрипт, используя другие имена параметров.
Разверните скрипт в виде веб-приложения.
Для развертывания скрипта в качестве веб-приложения выполните следующие действия:
- В правом верхнем углу проекта скрипта нажмите «Развернуть» > «Новое развертывание» .
- Рядом с пунктом «Выберите тип» нажмите «Включить типов развертывания» > «Веб-приложение» .
- Введите информацию о вашем веб-приложении в поля раздела «Конфигурация развертывания».
- Нажмите «Развернуть» .
Поделитесь URL-адресом веб-приложения с теми, кому вы хотите предоставить доступ к приложению, при условии, что вы предоставили им такой доступ.
Веб-приложения, развернутые в одном домене, перестают функционировать, если их владельцем становится общий диск или учетная запись в другом домене. Это можно исправить, попросив нового владельца или соавтора повторно развернуть веб-приложение в новом домене. В качестве альтернативы, если веб-приложение переместить обратно в исходный домен, оно снова начнет функционировать в этом домене без повторного развертывания.
Протестируйте развертывание веб-приложения.
Чтобы протестировать свой скрипт в качестве веб-приложения, выполните следующие шаги:
- В правом верхнем углу проекта скрипта нажмите «Развернуть» > «Тестовые развертывания» .
- Рядом с пунктом «Выберите тип» нажмите «Включить типов развертывания» > «Веб-приложение» .
- В поле "URL веб-приложения" нажмите "Копировать" .
Вставьте URL-адрес в свой браузер и протестируйте веб-приложение.
Этот URL-адрес заканчивается на
/devи доступен только пользователям, имеющим права на редактирование скрипта. Данный экземпляр приложения всегда запускает последний сохраненный код и предназначен только для тестирования в процессе разработки.
Для тестирования функции детальной аутентификации OAuth в веб-приложении убедитесь, что в вашем проекте еще нет существующих разрешений. Чтобы аннулировать существующие разрешения, используйте ScriptApp.invalidateAuth . Для веб-приложений, которые уже развернуты и работают под учетной записью активного пользователя , измените поле executeAs в манифесте на USER_DEPLOYING .
При развертывании веб-приложений для запуска от имени разработчика следует проявлять особую осторожность при работе с токенами OAuth, полученными с помощью метода ScriptApp.getOAuthToken . Эти токены могут предоставлять другим приложениям доступ к вашим данным — никогда не передавайте их клиенту.
Разрешения
Права доступа для веб-приложения различаются в зависимости от способа его запуска:
- Запуск приложения от моего имени — В этом случае скрипт всегда будет выполняться от вашего имени, как владельца скрипта, независимо от того, кто обращается к веб-приложению.
- Запуск приложения от имени пользователя, обращающегося к веб-приложению — В этом случае скрипт выполняется от имени активного пользователя, использующего веб-приложение. Такой подход к управлению правами доступа приводит к тому, что веб-приложение отображает адрес электронной почты владельца скрипта, когда пользователь авторизует доступ.
Для предотвращения злоупотреблений Apps Script устанавливает ограничения на количество новых пользователей, которые могут авторизовать веб-приложение, запускаемое от имени этого пользователя. Эти ограничения зависят, помимо прочего, от того, является ли издательская учетная запись частью домена Google Workspace .
Совместная работа над веб-приложениями с использованием общего диска . При развертывании веб-приложения на общем диске выбор опции «Выполнять от вашего имени» приводит к выполнению веб-приложения с правами пользователя, который его развернул (поскольку владельца скрипта нет).
Встройте свое веб-приложение в Google Сайты {:#embed-web-app}
Встроенные веб-приложения по-прежнему требуют предоставления прав доступа для предотвращения злонамеренного использования. Если ваше встроенное веб-приложение, похоже, не работает, проверьте, позволяют ли его использование права доступа, установленные владельцем веб-приложения и администратором домена.
Для встраивания веб-приложения в Sites его необходимо сначала развернуть . Вам также потребуется URL-адрес развернутого приложения из диалогового окна развертывания .
Чтобы встроить веб-приложение на страницу сайта , выполните следующие действия:
- Откройте страницу «Сайты», куда вы хотите добавить веб-приложение.
- Выберите Вставка > Встроить URL .
- Вставьте URL-адрес веб-приложения и нажмите «ДОБАВИТЬ» .
Веб-приложение отображается во фрейме в предварительном просмотре страницы. После публикации страницы пользователям вашего сайта может потребоваться авторизация веб-приложения перед его нормальным запуском. Неавторизованные веб-приложения запрашивают у пользователя подтверждение авторизации.
Веб-приложения и история браузера
Для имитации многостраничного приложения или приложения с динамическим пользовательским интерфейсом, управляемым с помощью параметров URL, определите объект состояния, представляющий пользовательский интерфейс или страницу приложения, и передавайте это состояние в историю браузера по мере того, как пользователь перемещается по приложению. Отслеживайте события истории, чтобы ваше веб-приложение отображало правильный пользовательский интерфейс при перемещении пользователя между страницами с помощью кнопок браузера. Запрашивая параметры URL во время загрузки, ваше приложение будет динамически формировать свой пользовательский интерфейс на основе этих параметров, позволяя пользователю запускать приложение в определенном состоянии.
Apps Script предоставляет два асинхронных клиентских JavaScript API для создания веб-приложений, связанных с историей браузера:
google.script.historyпредоставляет методы для динамического реагирования на изменения истории браузера. Это включает в себя: добавление состояний (простых объектов, которые вы определяете) в историю браузера, замену верхнего состояния в стеке истории и установку функции обратного вызова для реагирования на изменения истории.google.script.urlпредоставляет средства для получения параметров URL текущей страницы и фрагмента URL, если они присутствуют.
Эти API для работы с историей событий доступны только для веб-приложений. Они не поддерживаются для боковых панелей, диалоговых окон или дополнений. Также не рекомендуется использовать эту функциональность в веб-приложениях, встроенных в сайты .