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

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

מצב ארגז חול

כל מצבי הארגז חול הוצאו משימוש, למעט 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.