Per proteggere gli utenti dall'invio di contenuti HTML o JavaScript dannosi, Apps Script utilizza iframe per la sandbox di app web per i servizi HTML o per interfacce utente personalizzate per Documenti, Fogli e Moduli Google. Il servizio HTML non utilizza una sandbox in altre situazioni, ad esempio per generare il corpo di un'email. La sandbox impone limitazioni al codice lato client.
Modalità sandbox
Tutte le modalità sandbox sono ora ritirate, ad eccezione di IFRAME
. Le app che utilizzano modalità sandbox precedenti ora usano automaticamente la nuova modalità IFRAME
. Se disponi di script
sviluppati utilizzando le modalità precedenti (NATIVE
e EMULATED
), segui
le istruzioni per la migrazione per assicurarti
che funzionino correttamente nella modalità IFRAME
.
Il metodo setSandboxMode
non ha alcun effetto quando viene chiamato.
Limitazioni nella modalità IFRAME
La modalità sandbox IFRAME
si basa sulla 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 è impostato solo per i progetti di script autonomi.
La parola chiave allow-top-navigation
, che consente ai contenuti di navigare nel 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.
Impostare l'attributo target del link
Nella 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>
nella sezione head della pagina web che la include:
<!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 XmlHttpRequests devono essere caricati tramite HTTPS, non HTTP.