Google Apps Script — Веб-приложения.

starstarstarstarstar 5.0
Всего оценок: 15
Последнее обновление:

Если вы создаете пользовательский интерфейс для скрипта, вы можете опубликовать сценарий как веб-приложение.

Как автономные сценарии, так и сценарии, связанные с приложениями G Suite, можно превратить в веб-приложения, если они отвечают следующим требованиям.

Требования к веб-приложениям

Сценарий может быть опубликован как веб-приложение, если оно отвечает этим требованиям:

Параметры запроса

Когда пользователь посещает приложение или программа отправляет веб-приложению 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

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 с сообщением об ошибке «Извините, файл, который вы запросили, не существует».

Если возможно, обновите свой скрипт использовав другие имена параметров.

Развертывание сценария как веб-приложение

Чтобы опубликовать сценарий как веб-приложение, выполните следующие действия:

  1. Сохраните новую версию скрипта, выбрав Файл > Управление версиями, затем Сохранить новую версию.
  2. Выберите Опубликовать > Развернуть как веб-приложение.
  3. В разделе Версия проекта выберите версию, которую вы только что сохранили.
  4. Затем, в разделе Выполнение приложения как выберите, с чьей авторизацией должно работать приложение: ваша учетная запись (разработчик) или учетная запись пользователя, который посещает приложение (см. Разрешения).
  5. А в разделе Кто имеет доступ к приложению, выберите, кому разрешить его посещать. Параметры различаются в зависимости от типа учетной записи, но они могут включать Только я, любого члена вашего домена Любой (с учетной записью Google) или Любой, даже анонимный.
  6. Нажмите Развернуть.

URL-адреса для вашего приложения

После нажатия кнопки Развернуть вы увидите новое диалоговое окно с сообщением о том, что ваш проект был успешно развернут как веб-приложение.

В этом диалоговом окне представлены два важных URL-адреса для вашего приложения:

  • Первый помечен как Текущий URL веб-приложения и заканчивается на /exec. Этот URL-адрес предназначен для опубликованной версии вашего приложения на основе последней сохраненной и развернутой версии.
  • Вторая — это ссылка, последнюю версию кода, заканчивается на на /dev. Этот URL-адрес доступен только пользователям, у которых есть доступ к редактированию. Этот экземпляр приложения всегда запускает самый последний сохраненный код (не обязательно формальную версию) и предназначен для быстрого тестирования во время разработки.

Вы можете поделиться URL-адресом веб-приложения с пользователями (если вы предоставили им доступ). Также возможно распространять веб-приложения в Интернет-магазине Chrome для публичного использования.

При развертывании веб-приложений для запуска в качестве разработчика вы должны проявлять большую осторожность при работе с токенами OAuth, полученными с помощью ScriptApp.getOAuthToken().

Эти маркеры могут предоставлять другим приложениям доступ к вашим данным — никогда не передавайте их клиенту.

Веб-приложения, развернутые в одном домене, перестают функционировать, если их право собственности изменяется на Team Drive или учетную запись в другом домене.

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

Разрешения

Разрешения для веб-приложения различаются в зависимости от того, какие настройки вы выберете при развертывании:

  • Выполнение приложения от моего имени. В этом случае скрипт всегда выполняется, как вы, владелец скрипта, независимо от того, кто обращается к веб-приложению.
  • Выполните приложение как пользователь, обращающийся к веб-приложению (от имени пользователя). В этом случае сценарий запускается под идентификатором активного пользователя с помощью веб-приложения. Этот подход разрешает веб-приложению показывать электронную почту владельца сценария, когда пользователь разрешает доступ.

Чтобы предотвратить злоупотребление, скрипт Apps накладывает ограничения на скорость, с которой новые пользователи могут разрешать веб-приложение, которое выполняется в качестве пользователя. Эти ограничения зависят, помимо прочего, от того, является ли учетная запись издателем частью домена G Suite.

Вы можете работать в веб-приложениях с помощью Team Drives. Когда развертывается веб-приложение на Team Drive, выбор «выполнить по мере того, как вы» приводит к тому, что веб-приложение выполняется под управлением пользователя, который его развернул (поскольку владелец сценария отсутствует).

Внедрение вашего веб-приложения в Сайты Google

Вы также можете встраивать веб-приложения в классические и новые версии сайтов Google.

Встроенные веб-приложения по-прежнему требуют разрешений, чтобы предотвратить вредоносное использование. Если ваше встроенное веб-приложение, не работает, проверьте разрешения, установленные владельцем веб-приложения и администратором домена.

Внедрение веб-приложения на новых сайтах

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

Чтобы внедрить веб-приложение на новую страницу Сайтов, выполните следующие действия:

  1. Откройте страницу Сайты, на которой вы хотите добавить веб-приложение.
  2. Выберите Вставить > Вставить адрес.
  3. Вставьте URL-адрес веб-приложения и нажмите кнопку Добавить.

Внедрение веб-приложения на классических сайтах

Вы можете связать скрипт с классическим сайтом Google почти так же, как вы можете связать скрипт с Google Документом или Таблицей.

Чтобы создать связанный скрипт:

  1. Зайдите на свой сайт
  2. Нажмите значок шестеренки Настройки
  3. Затем выберите Управление сайтом
  4. На странице Управление сайтом выберите Сценарии приложений в левой панели навигаци
  5. А затем кнопку Добавить новый сценарий

Это открывает новый скрипт в редакторе сценариев приложений, где вы можете кодировать и развертывать свое веб-приложение.

Вы также можете встраивать свое веб-приложение на страницу. Вы можете привязать его к сайту или использовать любое веб-приложение, для которого у вас есть URL-адрес.

Чтобы внедрить веб-приложение на страницу Сайты Google, выполните следующие действия:

  1. Откройте существующий сайт, для которого у вас есть доступ к редактированию или создание нового сайта.
  2. Перейдите на страницу своего сайта, на которой вы хотите встроить веб-приложение.
  3. Нажмите значок редактирования, а затем Вставить > Скрипт Google Apps.
  4. Выберите сценарий из списка, представляющего ваше веб-приложение. Если ваше веб-приложение не связано с этим сайтом, вы можете вставить URL-адрес веб-приложения.
  5. Нажмите кнопку Выбрать, выберите нужные параметры в следующем диалоговом окне и нажмите Сохранить.
  6. Сохраните изменения на странице, а затем вы увидите свое веб-приложение, встроенное на страницу сайта.

Веб-приложения и История Браузера

Возможно есть необходимость, чтобы веб-приложение для сценариев приложений смоделировало многостраничное приложение или одно с динамическим интерфейсом, контролируемым с помощью параметров URL.

Чтобы это сделать, вы можете определить объект состояния для представления пользовательского интерфейса приложения или страницы и нажать состояние в историю браузера, когда пользователь перейдет к вашему приложению.

Вы также можете слушать события истории, чтобы ваше веб-приложение отображало правильный пользовательский интерфейс, когда пользователь перемещается вперед и назад с помощью кнопок браузера.

Запросив параметры URL во время загрузки, вы можете настроить динамическое создание своего пользовательского интерфейса на основе этих параметров, позволяя пользователю запускать приложение в определенном состоянии.

Сценарий приложений содержит два асинхронных клиентских API JavaScript для поддержки создания веб-приложений, связанных с историей браузера:

  • google.script.history предоставляет методы, позволяющие динамически реагировать на изменения истории браузера.Сюда входят: нажатие состояний (простых объектов, которые вы можете определить) в историю браузера, замена верхнего состояния в стеке истории и установка функции обратного вызова для прослушивания, чтобы реагировать на изменения истории.
  • google.script.url предоставляет средства для извлечения URL-адресов текущей страницы и фрагмента URL-адреса, если они присутствуют.

Эти API истории доступны только для веб-приложений. Они не поддерживаются для боковых панелей, диалогов или надстроек. Эта функциональность также не рекомендуется использовать в веб-приложениях, встроенных в Сайты Google.

Статья подготовлена по материалам

Web Apps

Author: Максим Стоянов

Разработчик Google Apps Script.