כדי להגן על המשתמשים מפני HTML או JavaScript זדוניים, ב-Apps Script נעשה שימוש ב-iframes כדי להפעיל אפליקציות אינטרנט בשירות HTML של Sandbox או בממשקי משתמש מותאמים אישית עבור Google Docs, Sheets ו-Forms. (שירות ה-HTML לא משתמש בארגז חול במצבים אחרים, כמו יצירת גוף האימייל). ארגז החול מטיל מגבלות על הקוד בצד הלקוח.
מצב ארגז חול
כל מצבי ארגז החול מושבתים עכשיו, מלבד IFRAME
. אפליקציות שמשתמשות במצבי ארגז חול ישנים יותר משתמשות עכשיו במצב IFRAME
באופן אוטומטי. אם יש לכם סקריפטים שפותחו באמצעות המצבים הישנים (NATIVE
ו-EMULATED
), עליכם לפעול לפי הוראות ההעברה כדי לוודא שהם פועלים באופן תקין במצב IFRAME
.
עכשיו אין השפעה ל-method setSandboxMode
כשהוא מופעל.
הגבלות במצב IFRAME
מצב ארגז החול IFRAME
מבוסס על התכונה הרצה בארגז חול (sandboxing) של 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.