傳回各種 MIME 類型的原始文字內容。
將指令碼發布為網路應用程式後,只要向指令碼的網址提出要求,系統就會執行回呼函式 doGet 和 doPost。Content 服務可以傳回原始文字內容,而非使用 HTML 服務建立的使用者介面物件。編寫可做為服務的指令碼,回應 GET 和 POST 要求,並提供各種 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);
}
將這個應用程式發布為匿名網頁應用程式。使用者可以在服務網址結尾加入網址參數。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);
}
如要從瀏覽器呼叫這項服務,請建立指令碼標記,並將 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 用戶端的說明文件。