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