Servizio HTML: limitazioni

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 è 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 su cui intervenire.

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.