บริการ HTML: ข้อจำกัด

Apps Script ใช้ iframe เพื่อแยกส่วนเว็บแอปที่ให้บริการ HTML หรืออินเทอร์เฟซผู้ใช้ที่กําหนดเองสําหรับ Google เอกสาร, ชีต และสไลด์ไว้ในแซนด์บ็อกซ์เพื่อปกป้องผู้ใช้จากการแสดง HTML หรือ JavaScript ที่เป็นอันตราย (บริการ HTML จะไม่ใช้แซนด์บ็อกซ์ในสถานการณ์อื่นๆ เช่น การสร้างเนื้อหาอีเมล) Sandbox จะจํากัดโค้ดฝั่งไคลเอ็นต์

โหมดแซนด์บ็อกซ์

ตอนนี้เราเลิกใช้งานโหมดแซนด์บ็อกซ์ทั้งหมดแล้ว ยกเว้น IFRAME ตอนนี้แอปที่ใช้โหมดแซนด์บ็อกซ์เก่าจะใช้โหมด IFRAME เวอร์ชันใหม่โดยอัตโนมัติ หากคุณใช้สคริปต์ที่พัฒนาโดยใช้โหมดเก่า (NATIVE และ EMULATED) คุณควรทําตามวิธีการย้ายข้อมูลเพื่อให้แน่ใจว่าสคริปต์ทํางานได้อย่างถูกต้องภายใต้โหมด IFRAME

ตอนนี้เมธอด setSandboxMode จะใช้งานไม่ได้เมื่อเรียกใช้

ข้อจํากัดในโหมด IFRAME

IFRAMEโหมดแซนด์บ็อกซ์จะอิงตามฟีเจอร์แซนด์บ็อกซ์ iframe ใน HTML5 โดยใช้คีย์เวิร์ดต่อไปนี้

คีย์เวิร์ด allow-top-navigation ซึ่งช่วยให้เนื้อหาไปยังส่วนต่างๆ ของบริบทการท่องเว็บระดับบนสุดถูกจํากัดและไม่ได้ตั้งค่าเป็นแอตทริบิวต์ในซานด์บ็อกซ์ หากต้องการเปลี่ยนเส้นทางสคริปต์ ให้เพิ่มลิงก์หรือปุ่มเพื่อให้ผู้ใช้ดำเนินการแทน

ในโหมด IFRAME คุณต้องตั้งค่าแอตทริบิวต์เป้าหมายของลิงก์เป็น _top หรือ _blank

Code.js

function doGet() {
  var template = HtmlService.createTemplateFromFile('top');
  return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

top.html

<!DOCTYPE html>
<html>
 <body>
   <div>
     <a href="http://google.com" target="_top">Click Me!</a>
   </div>
 </body>
</html>

นอกจากนี้ คุณยังลบล้างแอตทริบิวต์นี้โดยใช้แท็ก <base> ภายในส่วนหัวของหน้าเว็บที่รวมอยู่ได้ด้วย

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <div>
     <a href="http://google.com">Click Me!</a>
   </div>
 </body>
</html>

เนื้อหาที่ใช้งานอยู่ต้องใช้ HTTPS

เนื้อหา"ทำงานอยู่" เช่น สคริปต์ สไตล์ชีตภายนอก และ XmlHttpRequest ต้องโหลดผ่าน HTTPS ไม่ใช่ HTTP