เมื่อเผยแพร่สคริปต์เป็นเว็บแอป ฟังก์ชัน Callback พิเศษ
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 ก็ตลกดีนะ แต่หาอ่านฉบับเต็มไม่ได้ เรื่องตลก เว้นแต่คุณจะวางเมาส์เหนือการ์ตูนอื่นเพื่อดูข้อความแสดงแทนเพิ่มเติม ขออภัย คุณวางเมาส์เหนือเบราว์เซอร์ในอุปกรณ์เคลื่อนที่ไม่ได้ ดังนั้นวิธีนี้จึงใช้งานไม่ได้
สมมติว่าเราต้องการแก้ไขฟีดเพื่อให้ช็อตเด็ดส่วนนั้นอยู่ในฟีด โดยตรง ให้คุณเลื่อนหน้าจอลง 2-3 ระดับ แทนการวางเมาส์เหนือโฆษณา นั่น จะทำงานได้ดีบนอุปกรณ์เคลื่อนที่ ต่อไปนี้เป็นรหัส:
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 เพื่อดึงข้อมูลดั้งเดิม ฟีด RSS ของ XKCD จากนั้น เราจะใช้นิพจน์ทั่วไปของ JavaScript มาตรฐานเพื่อทำให้ฟิลด์ ทดแทนที่เราต้องการ สุดท้าย เราจะรวมฟีดที่แก้ไขแล้วไว้ใน TextOutput และตั้งค่า MIME ลงใน RSS
ในการดูการทำงานจริง ให้เผยแพร่สคริปต์เป็นเว็บแอป โดยอนุญาต การเข้าถึงแบบไม่ระบุชื่อ (เนื่องจากโปรแกรมอ่าน RSS ของคุณจะเข้าชมแบบไม่ระบุชื่อ ผู้ใช้) จากนั้นเพิ่ม URL ของบริการ (ไม่ใช่ฟีด RSS เดิม) ลงใน RSS อ่านหรือเข้าชมโดยตรงในเว็บเบราว์เซอร์ เท่านี้ก็เรียบร้อย
การแสดง JSON จากสคริปต์
เราสามารถทำอะไรกับบริการเนื้อหาได้อีกบ้าง ลองแสดงผล JSON ไปยังที่อื่นด้วยไหม ของ Google หรือเว็บไซต์และบริการอื่นๆ ต่อไปนี้คือสคริปต์ง่ายๆ ที่ใช้ ที่ทุกคนสามารถใช้งานเพื่อดูว่าช่วงเวลาของปฏิทินเปิดอยู่หรือไม่
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})
การเปลี่ยนเส้นทาง
เพื่อความปลอดภัย เนื้อหาที่แสดงผลโดยบริการเนื้อหาจะไม่แสดงจาก
script.google.com
แต่เปลี่ยนเส้นทางไปยัง URL แบบครั้งเดียวที่
script.googleusercontent.com
ซึ่งหมายความว่าหากคุณใช้บริการเนื้อหา
ในการส่งข้อมูลกลับไปยังแอปพลิเคชันอื่น คุณต้องตรวจสอบว่าไคลเอ็นต์ HTTP
ได้รับการกำหนดค่าให้ติดตามการเปลี่ยนเส้นทางแล้ว ตัวอย่างเช่น ในยูทิลิตีบรรทัดคำสั่ง cURL
เพิ่มธง -L
โปรดดูรายละเอียดเพิ่มเติมในเอกสารประกอบเกี่ยวกับไคลเอ็นต์ HTTP
เพื่อดูข้อมูลเกี่ยวกับวิธีเปิดใช้ลักษณะการทำงานนี้