שמחזירות תוכן טקסטואלי גולמי מסוגי MIME שונים.
כשמפרסמים סקריפט כאפליקציית אינטרנט, פונקציות הקריאה החוזרת doGet ו-doPost מופעלות בכל פעם שנשלחת בקשה לכתובת ה-URL של הסקריפט. במקום להחזיר אובייקט של ממשק משתמש שנוצר באמצעות שירות ה-HTML, שירות התוכן יכול להחזיר תוכן טקסטואלי גולמי. לכתוב סקריפטים שפועלים כשירותים, שמגיבים לבקשות 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);
}
הקוד מורכב מהרכיבים הבאים. משתמשים בשירות אחזור של כתובות אתרים כדי לאחזר את פיד ה-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 epoch.
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 שמוגדר לכתובת ה-URL של השירות ופרמטר נוסף prefix. זהו השם של הפונקציה ב-JavaScript בצד הלקוח שמופעלת עם הערך שמוחזר על ידי השירות.
<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>
בדוגמה הזו מוצגת תיבת הודעה בדפדפן עם הפלט של השירות, באמצעות הפונקציה המובנית alert של הדפדפן כקידומת. קוד ה-JavaScript
שמוחזר נראה כך:
alert({"available":true})
חשוב להיזהר כשמשתמשים ב-JSONP. כל אחד יכול להטמיע את תג הסקריפט בדף אינטרנט, ולכן יכול להיות שתולעו אתכם להפעיל את הסקריפט כשאתם מבקרים באתר זדוני, ואז האתר יוכל לתעד את הנתונים שמוחזרים. חשוב לוודא שסקריפטים של JSONP הם לקריאה בלבד ומחזירים רק מידע לא רגיש.
הפניות אוטומטיות
מטעמי אבטחה, התוכן שמוחזר על ידי שירות התוכן מופנה לכתובת URL חד-פעמית בכתובת script.googleusercontent.com. אם אתם משתמשים בשירות התוכן כדי להחזיר נתונים לאפליקציה אחרת, ודאו שלקוח ה-HTTP מוגדר להפניות אוטומטיות. כדי להשתמש בכלי curl בשורת הפקודה, מוסיפים את הדגל -L. מידע נוסף זמין במאמרי העזרה של לקוח ה-HTTP.