Контент-сервис

которые возвращают необработанное текстовое содержимое различных MIME-типов.

Когда скрипт публикуется как веб-приложение, функции обратного вызова doGet и doPost выполняются при каждом запросе к URL-адресу скрипта. Вместо возврата объекта пользовательского интерфейса, созданного с помощью службы HTML , служба Content может возвращать необработанный текстовый контент. Пишите скрипты, которые действуют как службы, отвечая на запросы GET и POST и предоставляя данные различных MIME-типов.

Основы

В следующем примере показано, как использовать службу «Контент»:

function doGet() {
  return ContentService.createTextOutput('Hello, world!');
}

Разверните скрипт как веб-приложение . Выполните те же действия, что и при запуске пользовательского интерфейса. При отправке GET запроса к URL-адресу скрипта возвращается текст Hello, world! . Помимо обычного текста, сервис поддерживает возврат контента в форматах ATOM, CSV, iCal, JavaScript, JSON, RSS, vCard и XML.

Предоставлять RSS-каналы

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

function doGet() {
  var feed = UrlFetchApp.fetch('http://xkcd.com/rss.xml').getContentText();
  feed = feed.replace(
    /(<img.*?alt="(.*?)".*?>)/g,
    '$1' + new Array(10).join('<br />') + '$2');
  return ContentService.createTextOutput(feed)
    .setMimeType(ContentService.MimeType.RSS);
}

Код состоит из следующих компонентов. Используйте сервис URL Fetch для получения оригинальной RSS-ленты XKCD. Используйте стандартное регулярное выражение JavaScript для выполнения замен. Оберните отредактированную ленту в объект TextOutput и установите MIME-тип на RSS.

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

Отображение JSON из скриптов

Используйте службу Content для передачи JSON другим скриптам, веб-сайтам и сервисам. Следующий скрипт реализует службу, которая проверяет, свободен ли слот в календаре в определенное время.

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(JSON.stringify(result))
    .setMimeType(ContentService.MimeType.JSON);
}

Опубликуйте это как анонимное веб-приложение. Пользователи могут добавлять параметры URL в конец URL-адреса сервиса. Параметры start и end задают временной диапазон в стандартной эпохе Unix.

curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000

Сервис возвращает JSON-данные, в которых указывается, открыт ли календарь в указанном диапазоне.

{"available":true}

Отображение JSONP на веб-страницах

С небольшим изменением ваш JSON-сервис можно преобразовать в JSONP , чтобы его можно было вызывать из JavaScript в браузере.

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(
    request.parameters.prefix + '(' + JSON.stringify(result) + ')')
    .setMimeType(ContentService.MimeType.JAVASCRIPT);
}

Для вызова этой службы из браузера создайте тег <script> с атрибутом src , установленным на URL-адрес службы, и дополнительным параметром prefix . Это имя функции в вашем клиентском JavaScript, которая вызывается со значением, возвращаемым службой.

<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>

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

alert({"available":true})

Будьте осторожны при использовании JSONP. Поскольку любой может встроить тег <script> на свою веб-страницу, вас могут обманом заставить выполнить скрипт при посещении вредоносного веб-сайта, который затем сможет перехватить полученные данные. Убедитесь, что скрипты JSONP доступны только для чтения и возвращают только неконфиденциальную информацию.

Перенаправления

В целях безопасности контент, возвращаемый службой Content, перенаправляется на одноразовый URL-адрес script.googleusercontent.com . Если вы используете службу Content для возврата данных в другое приложение, убедитесь, что HTTP-клиент настроен на отслеживание перенаправлений. Для утилиты командной строки curl добавьте флаг -L . Для получения дополнительной информации обратитесь к документации вашего HTTP-клиента.