Layanan HTML: Pembatasan

Untuk melindungi pengguna agar tidak melihat HTML atau JavaScript berbahaya, Apps Script menggunakan iframe untuk melakukan sandbox aplikasi web layanan HTML atau antarmuka pengguna kustom untuk Google Dokumen, Spreadsheet, dan Formulir. (Layanan HTML tidak menggunakan sandbox dalam situasi lain, seperti membuat isi email.) Sandbox menerapkan batasan pada kode sisi klien.

Mode Sandbox

Semua mode sandbox kini dihentikan kecuali untuk IFRAME. Aplikasi yang menggunakan mode sandbox lama kini otomatis menggunakan mode IFRAME baru. Jika Anda memiliki skrip yang dikembangkan menggunakan mode lama (NATIVE dan EMULATED), Anda harus mengikuti petunjuk migrasi untuk memastikan skrip tersebut berfungsi dengan benar dalam mode IFRAME.

Metode setSandboxMode sekarang tidak berpengaruh saat dipanggil.

Pembatasan dalam mode IFRAME

Mode sandbox IFRAME didasarkan pada fitur sandboxing iframe di HTML5, menggunakan kata kunci berikut:

  • allow-same-origin
  • allow-forms
  • allow-scripts
  • allow-popups
  • allow-downloads
  • allow-modals
  • allow-popups-to-escape-sandbox
  • allow-top-navigation-by-user-activation - Atribut ini hanya ditetapkan untuk project skrip mandiri.

Kata kunci allow-top-navigation, yang memungkinkan konten menavigasi konteks penjelajahan tingkat atas, dibatasi dan tidak ditetapkan sebagai atribut di sandbox. Jika Anda perlu mengalihkan skrip, tambahkan link atau tombol agar pengguna dapat mengambil tindakan.

Dalam mode IFRAME, Anda perlu menetapkan atribut target link ke _top atau _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>

Anda juga dapat mengganti atribut ini menggunakan tag <base> di bagian head halaman web yang mencakupnya:

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

HTTPS diperlukan untuk konten aktif

Konten"Aktif" seperti skrip, stylesheet eksternal, dan XmlHttpRequests harus dimuat melalui HTTPS, bukan HTTP.