内容服务

返回各种 MIME 类型的原始文本内容。

当脚本作为 Web 应用发布时,每当向脚本的网址发出请求时,回调函数 doGetdoPost 都会执行。内容服务可以返回原始文本内容,而不是返回使用 HTML 服务创建的界面对象。编写充当服务、响应 GETPOST 请求并提供各种 MIME 类型的数据的脚本。

基础知识

以下示例展示了如何使用 Content 服务:

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

将脚本部署为 Web 应用。 按照与提供用户界面相同的步骤操作。当向脚本的网址发出 GET 请求时,系统会返回文本 Hello, world!。除了纯文本之外,该服务还支持返回 ATOM、CSV、iCal、JavaScript、JSON、RSS、vCard 和 XML 内容。

投放 RSS Feed

过滤 RSS Feed 以修改其内容。例如,修改 XKCD Feed,以直接在 Feed 中添加替代文本,从而提升移动设备上的浏览体验。

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);
}

该代码包含以下组件。使用 网址 Fetch 服务提取原始 XKCD RSS Feed。使用标准 JavaScript 正则表达式进行替换。将修改后的 Feed 封装在 TextOutput 对象中,并将 MIME 类型设置为 RSS。

如需查看实际效果,请将脚本发布为 Web 应用并允许匿名访问。将服务的网址添加到 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);
}

将其作为匿名 Web 应用发布。用户可以在服务网址末尾添加网址参数。startend 参数用于指定标准 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);
}

如需从浏览器调用此服务,请创建一个脚本标记,其中 src 属性设置为服务网址,并添加一个额外的 prefix 参数。这是客户端 JavaScript 中函数的名称,该函数会使用服务返回的值进行调用。

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

此示例展示了浏览器中的一个消息框,其中包含服务输出,并使用浏览器的内置 alert 函数作为前缀。返回的 JavaScript 代码如下所示:

alert({"available":true})

使用 JSONP 时请务必小心。由于任何人都可以将脚本标记嵌入到其网页中,因此您可能会在访问恶意网站时被诱骗执行该脚本,从而导致返回的数据被捕获。确保 JSONP 脚本是只读的,并且仅返回非敏感信息。

重定向

出于安全考虑,内容服务返回的内容会重定向到 script.googleusercontent.com 中的一次性网址。如果您使用 Content 服务将数据返回给其他应用,请确保 HTTP 客户端已配置为遵循重定向。对于 curl 命令行实用程序,请添加标志 -L。如需了解详情,请参阅 HTTP 客户端的相关文档。