內容服務

傳回各種 MIME 類型的原始文字內容。

將指令碼發布為網路應用程式後,只要向指令碼的網址提出要求,系統就會執行回呼函式 doGetdoPostContent 服務可以傳回原始文字內容,而非使用 HTML 服務建立的使用者介面物件。編寫可做為服務的指令碼,回應 GETPOST 要求,並提供各種 MIME 類型的資料。

基本概念

以下範例說明如何使用 Content 服務:

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

將指令碼部署為網頁應用程式。 按照提供使用者介面的相同步驟操作。當向指令碼的網址發出 GET 要求時,系統會傳回 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);
}

程式碼包含下列元件。使用網址擷取服務擷取原始 XKCD RSS 動態消息。使用標準 JavaScript 規則運算式進行替換。將編輯後的動態消息包裝在 TextOutput 物件中,並將 MIME 類型設為 RSS。

如要查看實際運作情形,請將指令碼發布為網頁應用程式,並允許匿名存取。將服務網址新增至 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);
}

將這個應用程式發布為匿名網頁應用程式。使用者可以在服務網址結尾加入網址參數。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 用戶端的說明文件。