Pour protéger les utilisateurs contre les codes HTML ou JavaScript malveillants, Apps Script utilise des iFrames pour placer en bac à sable les applications Web utilisant les services HTML ou les utilisateurs interfaces Google Docs, Sheets et Forms. (Le service HTML n'utilise pas de dans d'autres situations, par exemple lorsque le corps d'un e-mail est généré.) Bac à sable impose des limites au code côté client.
Mode bac à sable
Tous les modes bac à sable sont désormais arrêtés, à l'exception de IFRAME
. Applications utilisant l'ancienne version de bac à sable
utilisent désormais automatiquement le nouveau mode IFRAME
. Si vous disposez de scripts
développé à l'aide des anciens modes (NATIVE
et EMULATED
), vous devez
suivez les instructions de migration pour vous assurer
elles fonctionnent correctement en mode IFRAME
.
setSandboxMode
n'a plus d'effet lorsqu'elle est appelée.
Restrictions en mode IFRAME
Le mode bac à sable IFRAME
est basé sur
Fonctionnalité de bac à sable iFrame
en HTML5, à l'aide des mots clés suivants:
allow-same-origin
allow-forms
allow-scripts
allow-popups
allow-downloads
allow-modals
allow-popups-to-escape-sandbox
allow-top-navigation-by-user-activation
: cet attribut n'est défini que pour projets de script autonomes.
Le mot clé allow-top-navigation
, qui permet au contenu de naviguer dans son
le contexte de navigation de premier niveau est restreinte et n'est pas définie comme attribut dans le
dans l'environnement de bac à sable. Si vous devez rediriger votre script, ajoutez un lien ou un bouton
à l'utilisateur d'agir à la place.
Définir l'attribut cible du lien
En mode IFRAME
, vous devez définir l'attribut cible du lien sur
_top
ou _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>
Vous pouvez également remplacer cet attribut à l'aide de la balise <base>
dans l'en-tête
de la page Web correspondante:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS requis pour le contenu actif
"Actif" contenus (scripts, feuilles de style externes, XmlHttpRequests, etc.) doit être chargé HTTPS, et non HTTP.