บริการเนื้อหา

ที่แสดงเนื้อหาข้อความดิบของประเภท MIME ต่างๆ

เมื่อเผยแพร่สคริปต์เป็นเว็บแอป ฟังก์ชัน 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 เพื่อรวมข้อความแสดงแทนไว้ในฟีดโดยตรงเพื่อให้ดูในอุปกรณ์เคลื่อนที่ได้ดียิ่งขึ้น

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 type เป็น RSS

หากต้องการดูการทำงานของฟีเจอร์นี้ ให้เผยแพร่สคริปต์เป็นเว็บแอปและอนุญาตการเข้าถึงแบบไม่ระบุตัวตน เพิ่ม URL ของบริการลงในโปรแกรมอ่าน RSS หรือไปที่ URL โดยตรงใน เว็บเบราว์เซอร์

แสดง JSON จากสคริปต์

ใช้บริการเนื้อหาเพื่อแสดง 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 ระบุช่วงเวลาใน Epoch ของ 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 ตั้งค่าเป็น 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 ให้เพิ่ม Flag -L ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ HTTP Client