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