Веб-приложения

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

Как автономные скрипты , так и скрипты, привязанные к приложениям Google Workspace , могут быть преобразованы в веб-приложения при условии соблюдения следующих требований.

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

Скрипт можно опубликовать в качестве веб-приложения, если он соответствует следующим требованиям:

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

Когда пользователь заходит в приложение или программа отправляет приложению HTTP GET запрос, Google Apps Script запускает функцию doGet . Когда программа отправляет приложению HTTP POST запрос, Apps Script запускает вместо этого doPost . В обоих случаях аргумент 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.pathInfo

Путь URL после /exec или /dev . Например, если путь URL заканчивается на /exec/hello , то информация о пути будет hello .

e.contextPath Не используется, всегда пустая строка.
e.contentLength

Длина тела запроса для POST-запросов или -1 для GET-запросов.

332
e.postData.length

Аналогично e.contentLength

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

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

Для развертывания скрипта в качестве веб-приложения выполните следующие действия:

  1. В правом верхнем углу проекта скрипта нажмите «Развернуть» > «Новое развертывание» .
  2. Рядом с пунктом «Выберите тип» нажмите «Включить типов развертывания» > «Веб-приложение» .
  3. Введите информацию о вашем веб-приложении в поля раздела «Конфигурация развертывания».
  4. Нажмите «Развернуть» .

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

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

Протестируйте развертывание веб-приложения.

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

  1. В правом верхнем углу проекта скрипта нажмите «Развернуть» > «Тестовые развертывания» .
  2. Рядом с пунктом «Выберите тип» нажмите «Включить типов развертывания» > «Веб-приложение» .
  3. В поле "URL веб-приложения" нажмите "Копировать" .
  4. Вставьте URL-адрес в свой браузер и протестируйте веб-приложение.

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

Для тестирования функции детальной аутентификации OAuth в веб-приложении убедитесь, что в вашем проекте еще нет существующих разрешений. Чтобы аннулировать существующие разрешения, используйте ScriptApp.invalidateAuth . Для веб-приложений, которые уже развернуты и работают под учетной записью активного пользователя , измените поле executeAs в манифесте на USER_DEPLOYING .

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

Разрешения

Права доступа для веб-приложения различаются в зависимости от способа его запуска:

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

Для предотвращения злоупотреблений Apps Script устанавливает ограничения на количество новых пользователей, которые могут авторизовать веб-приложение, запускаемое от имени этого пользователя. Эти ограничения зависят, помимо прочего, от того, является ли издательская учетная запись частью домена Google Workspace .

Совместная работа над веб-приложениями с использованием общего диска . При развертывании веб-приложения на общем диске выбор опции «Выполнять от вашего имени» приводит к выполнению веб-приложения с правами пользователя, который его развернул (поскольку владельца скрипта нет).

Встройте свое веб-приложение в Google Сайты {:#embed-web-app}

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

Для встраивания веб-приложения в Sites его необходимо сначала развернуть . Вам также потребуется URL-адрес развернутого приложения из диалогового окна развертывания .

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

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

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

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

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

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

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

  • google.script.url предоставляет средства для получения параметров URL текущей страницы и фрагмента URL, если они присутствуют.

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