Per proteggere gli utenti dalla pubblicazione di HTML o JavaScript dannosi, Apps Script utilizza iframe per il sandbox di app web del servizio HTML o 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 state ritirate, ad eccezione di IFRAME
. Le app che utilizzano modalità sandbox precedenti ora utilizzano automaticamente la modalità IFRAME
più recente. Se hai script 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à
iframe sandboxing
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 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 intervenire.
Impostazione dell'attributo Target dei link
Nella modalità IFRAME
devi impostare l'attributo destinazione 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 contenitore:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS richiesto per i contenuti attivi
I contenuti"attivi", come script, fogli di stile esterni e XmlHttpRequest, devono essere caricati tramite HTTPS, non HTTP.