Untuk melindungi pengguna agar tidak menerima 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 memberlakukan batasan pada kode sisi klien.
Mode Sandbox
Semua mode sandbox kini dinonaktifkan, kecuali untuk IFRAME
. Aplikasi yang menggunakan mode sandbox lama
kini menggunakan mode IFRAME
baru secara otomatis. Jika Anda memiliki skrip yang
dikembangkan menggunakan mode lama (NATIVE
dan EMULATED
), Anda harus
mengikuti petunjuk migrasi untuk memastikan
skrip tersebut berfungsi dengan baik dalam mode IFRAME
.
Metode setSandboxMode
kini tidak berpengaruh saat dipanggil.
Pembatasan dalam mode IFRAME
Mode sandbox IFRAME
didasarkan pada fitur sandbox 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 level teratasnya, dibatasi dan tidak ditetapkan sebagai atribut di
sandbox. Jika Anda perlu mengalihkan skrip, tambahkan link atau tombol agar pengguna dapat mengambil tindakan.
Menetapkan atribut target link
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 penutup:
<!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.