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

ที่แสดงเนื้อหาข้อความดิบของประเภท 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