Per proteggere gli utenti dalla visualizzazione di codice HTML o JavaScript dannoso, Apps Script utilizza gli iframe per eseguire in sandbox le app web di servizio HTML o le interfacce utente personalizzate per Documenti, Fogli e Moduli Google. Il servizio HTML non utilizza una sandbox in altre situazioni, ad esempio generando il corpo di un'email. La sandbox impone delle limitazioni al codice lato client.
Modalità sandbox
Tutte le modalità sandbox sono ora ritirate, ad eccezione di IFRAME
. Le app che usano modalità sandbox precedenti ora usano automaticamente la modalità IFRAME
più recente. Se hai script che sono stati sviluppati utilizzando le modalità precedenti (NATIVE
e EMULATED
), devi seguire le istruzioni per la migrazione per assicurarti che funzionino correttamente in modalità IFRAME
.
Il metodo setSandboxMode
ora non ha alcun effetto quando viene chiamato.
Limitazioni in modalità IFRAME
La modalità sandbox IFRAME
si basa sulla funzionalità di sandboxing iframe in HTML5 e utilizza le seguenti parole chiave:
allow-same-origin
allow-forms
allow-scripts
allow-popups
allow-downloads
allow-modals
allow-popups-to-escape-sandbox
allow-top-navigation-by-user-activation
: questo attributo viene impostato solo per progetti di script autonomi.
La parola chiave allow-top-navigation
, che consente ai contenuti di navigare nel loro
contesto di navigazione di primo livello, è limitata e non impostata come attributo nella
sandbox. Se devi reindirizzare lo script, aggiungi un link o un pulsante su cui l'utente possa eseguire un'azione.
Impostazione dell'attributo target del link
Nella modalità IFRAME
devi impostare l'attributo link target su _top
o _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>
Puoi anche sostituire questo attributo utilizzando il tag <base>
all'interno della sezione head della pagina web che li contiene:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS obbligatorio per i contenuti attivi
I contenuti"attivi" come script, fogli di stile esterni e XmlHttpRequest devono essere caricati tramite HTTPS, non HTTP.