Layanan HTML: Pembatasan

Untuk melindungi pengguna dari HTML atau JavaScript berbahaya, layanan HTML menggunakan iframe untuk mengisolasi aplikasi web atau antarmuka pengguna kustom untuk Google Dokumen, Google Spreadsheet, dan Formulir. Layanan HTML tidak menggunakan sandbox dalam situasi lain, seperti membuat isi email. Sandbox membatasi kode sisi klien.

Mode Sandbox

Dengan pengecualian IFRAME, semua mode sandbox dihentikan. Aplikasi yang sebelumnya menggunakan mode NATIVE atau EMULATED kini otomatis menggunakan mode IFRAME. Jika skrip Anda dikembangkan dengan mode yang lebih lama, ikuti petunjuk migrasi untuk memastikan skrip berfungsi dengan benar.

Metode setSandboxMode kini tidak berpengaruh saat dipanggil.

Batasan dalam mode IFRAME

Mode sandbox IFRAME didasarkan pada fitur iframe sandboxing 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 teratasnya, 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 menyetel 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> dalam bagian head halaman web yang melampirkan:

<!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 XmlHttpRequest harus dimuat melalui HTTPS, bukan HTTP.