HTML 服務:限制

為了保護使用者不受惡意 HTML 或 JavaScript 的侵擾,Apps Script 使用 iframe 來沙箱 HTML 服務網頁應用程式或自訂使用者 Google 文件、試算表和表單的介面。(HTML 服務不使用 其他情況下的沙箱,例如產生電子郵件內文)。沙箱 對用戶端程式碼施加限制。

沙箱模式

所有沙箱模式現在均停用,除了 IFRAME 以外。使用舊版沙箱的應用程式 模式現在會自動使用新的 IFRAME 模式。如果有指令碼 是用舊版模式 (NATIVEEMULATED) 開發而成,因此您應該 請按照遷移操作說明操作,確保 它們可在 IFRAME 模式下正常運作

setSandboxMode 此方法現已沒有任何作用。

IFrame 模式的限制

IFRAME 沙箱模式的基礎是 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> 標記覆寫這項屬性 部分:

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