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

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

โค้ดประกอบด้วยคอมโพเนนต์ต่อไปนี้ ใช้บริการ บริการเรียก URL เพื่อดึงฟีด RSS ของ XKCD ต้นฉบับ ใช้นิพจน์ทั่วไปของ JavaScript มาตรฐานเพื่อทำการแทนที่ ห่อฟีดที่แก้ไขแล้วในออบเจ็กต์ TextOutput และตั้งค่าประเภท MIME เป็น RSS

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

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