כדי להגן על המשתמשים מפני הצגת HTML או JavaScript זדוניים, ב-Apps Script נעשה שימוש ב-iframes כדי להעביר לארגז חול אפליקציות אינטרנט שמבוססות על שירותי HTML או ממשקי משתמש מותאמים אישית ל-Google Docs, Sheets ו-Forms. (שירות ה-HTML לא משתמש בסביבת חול בנסיבות אחרות, כמו יצירת גוף האימייל). ארגז החול מטיל הגבלות על הקוד בצד הלקוח.
מצב ארגז חול
כל המצבים של ארגז החול הוצאו משימוש, מלבד IFRAME
. אפליקציות שמשתמשות במצבי ארגז חול ישנים משתמשות עכשיו באופן אוטומטי במצב IFRAME
החדש יותר. אם יש לכם סקריפטים שפותחו באמצעות המצבים הקודמים (NATIVE
ו-EMULATED
), עליכם לפעול לפי הוראות ההעברה כדי לוודא שהם פועלים כראוי במצב IFRAME
.
לשיטה setSandboxMode
אין עכשיו השפעה כשקוראים לה.
הגבלות במצב IFRAME
מצב ארגז החול IFRAME
מבוסס על התכונה ארגז חול של iframe ב-HTML5, באמצעות מילות המפתח הבאות:
allow-same-origin
allow-forms
allow-scripts
allow-popups
allow-downloads
allow-modals
allow-popups-to-escape-sandbox
allow-top-navigation-by-user-activation
– המאפיין הזה מוגדר רק לפרויקטים עצמאיים של סקריפטים.
מילת המפתח 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>
בקטע ה-head של דף האינטרנט המקיף:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
נדרש HTTPS לתוכן פעיל
תוכן 'פעיל' כמו סקריפטים, גיליונות סגנונות חיצוניים ו-XmlHttpRequests צריך להיטען דרך HTTPS ולא דרך HTTP.