Per impedire agli utenti di ricevere codice HTML o JavaScript dannoso, Apps Script utilizza iframe per la sandbox per le app web del servizio HTML o per interfacce per Documenti, Fogli e Moduli Google. (Il servizio HTML non utilizza un sandbox in altre situazioni, ad esempio generando il corpo di un'email.) Sabbiera impone limitazioni al codice lato client.
Modalità sandbox
Tutte le modalità sandbox sono state ritirate ad eccezione di IFRAME
. App che utilizzano sandbox precedenti
ora usano automaticamente la nuova modalità IFRAME
. Se disponi di script
sono state sviluppate utilizzando le modalità precedenti (NATIVE
e EMULATED
),
segui le istruzioni per la migrazione per assicurarti
funzionano correttamente nella modalità IFRAME
.
La setSandboxMode
non ha alcun effetto quando viene richiamato.
Limitazioni in modalità IFRAME
La modalità sandbox IFRAME
si basa su
Funzionalità di sandboxing degli iframe
in HTML5, utilizzando 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 la navigazione dei contenuti
contesto di navigazione di primo livello, è limitato e non impostato come attributo nella
sandbox. Se devi reindirizzare lo script, aggiungi un link o un pulsante per la
su cui intervenire.
Impostare l'attributo di destinazione del link
In modalità IFRAME
devi impostare l'attributo target del link 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 dell'intestazione
della pagina web che le contiene:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS richiesto per contenuti attivi
"Attivo" come script, fogli di stile esterni e XmlHttpRequests devono essere caricati HTTPS, non HTTP.