которые возвращают необработанное текстовое содержимое различных 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-клиента.