שירות HTML: הגבלות

כדי להגן על משתמשים מפני הצגת מודעות HTML או JavaScript זדוניים, Apps Script משתמש במסגרות iframe כדי להריץ אפליקציות אינטרנט בשירות HTML בארגז חול או משתמשים בהתאמה אישית ו-Google Docs, Sheets ו-Forms. (שירות ה-HTML לא משתמש בתג ארגז חול במצבים אחרים, כמו יצירת תוכן אימייל). ארגז החול כוללת מגבלות על קוד בצד הלקוח.

מצב ארגז חול

כל המצבים של ארגז חול נסגרו עכשיו, חוץ מIFRAME. אפליקציות שמשתמשות בארגז חול ישן יותר המצבים משתמשים עכשיו במצב IFRAME החדש יותר באופן אוטומטי. אם יש לכם סקריפטים פותחו באמצעות המצבים הישנים (NATIVE ו-EMULATED), עליך לפעול לפי הוראות ההעברה כדי לוודא הן פועלות כראוי במצב IFRAME.

setSandboxMode ל-method אין השפעה כאשר קוראים לו.

הגבלות במצב IFRAME

מצב ה-Sandbox של IFRAME מבוסס על התכונה הרצה בארגז חול (sandboxing) ב-iframe ב-HTML5, באמצעות מילות המפתח הבאות:

מילת המפתח 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> שבתוך הכותרת בקטע של דף האינטרנט המצורף:

<!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.