HTML-Dienst: Einschränkungen

Um Nutzer vor schädlichem HTML- oder JavaScript-Code zu schützen, bietet Apps Script Verwendet iFrames, um HTML-Dienst-Webanwendungen oder benutzerdefinierte Nutzer in einer Sandbox auszuführen Benutzeroberflächen für Google Docs, Google Tabellen und Google Formulare. Der HTML-Dienst verwendet kein Sandbox ausführen, z. B. beim Generieren des Texts einer E-Mail.) Sandbox schränkt clientseitigen Code ein.

Sandbox Mode

Alle Sandbox-Modi mit Ausnahme von IFRAME werden jetzt eingestellt. Apps, die eine ältere Sandbox verwenden verwenden jetzt automatisch den neueren Modus IFRAME. Wenn Sie Skripts haben, mit den älteren Modi (NATIVE und EMULATED) entwickelt wurden, sollten Sie folgen Sie der Migrationsanleitung, im IFRAME-Modus ordnungsgemäß funktionieren.

Die setSandboxMode -Methode jetzt hat beim Aufrufen keine Auswirkung.

Einschränkungen im IFRAME-Modus

Der Sandbox-Modus IFRAME basiert auf dem iFrame-Sandboxing-Funktion in HTML5 mit den folgenden Suchbegriffen erstellen:

  • allow-same-origin
  • allow-forms
  • allow-scripts
  • allow-popups
  • allow-downloads
  • allow-modals
  • allow-popups-to-escape-sandbox
  • allow-top-navigation-by-user-activation: Dieses Attribut gilt nur für eigenständigen Skriptprojekten nutzen.

Das Keyword allow-top-navigation, mit dem sich der Inhalt aufrufen lässt Browser-Kontext auf oberster Ebene, ist eingeschränkt und nicht als Attribut im Sandbox ausführen. Wenn Sie Ihr Skript weiterleiten müssen, fügen Sie einen Link oder eine Schaltfläche für das Aktionen ausführen können.

Im Modus „IFRAME“ müssen Sie das Link-Zielattribut entweder auf _top oder _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>

Sie können dieses Attribut auch mit dem <base>-Tag im head-Element überschreiben. der zugehörigen Webseite:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <div>
     <a href="http://google.com">Click Me!</a>
   </div>
 </body>
</html>

HTTPS für aktive Inhalte erforderlich

„Aktiv“ Inhalte wie Skripts, externe Stylesheets und XmlHttpRequests- HTTPS, nicht HTTP.