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