Servicio HTML: restricciones

Para proteger a los usuarios de códigos HTML o JavaScript maliciosos, Apps Script Usa iframes para implementar en zona de pruebas aplicaciones web de servicios HTML o interfaces de Google para Documentos, Hojas de cálculo y Formularios de Google. (El servicio HTML no utiliza un en otras situaciones, como generar el cuerpo de un correo electrónico). La zona de pruebas impone limitaciones al código del cliente.

Modo de zona de pruebas

Todos los modos de la zona de pruebas dejarán de estar disponibles, excepto IFRAME. Apps que usan una zona de pruebas más antigua ahora usan automáticamente el modo IFRAME más reciente. Si tienes secuencias de comandos que con los modos más antiguos (NATIVE y EMULATED), deberías sigue las instrucciones de migración para asegurarte funcionan correctamente en el modo IFRAME.

La setSandboxMode ahora no tiene efecto cuando se lo llama.

Restricciones en el modo IFRAME

El modo de zona de pruebas IFRAME se basa en Función de zona de pruebas de iframe en HTML5 con las siguientes palabras clave:

La palabra clave allow-top-navigation, que permite que el contenido navegue por su contexto de navegación de nivel superior, está restringido y no se establece como un atributo en el en la zona de pruebas. Si necesitas redireccionar la secuencia de comandos, agrega un vínculo o un botón para la usuario debe realizar una acción.

En el modo IFRAME, debes establecer el atributo de destino del vínculo en _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>

También puedes anular este atributo mediante la etiqueta <base> en el encabezado. de la página web adjunta:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <div>
     <a href="http://google.com">Click Me!</a>
   </div>
 </body>
</html>

Se requiere HTTPS para el contenido activo

“Activo” contenido como secuencias de comandos, hojas de estilo externas y XmlHttpRequests. HTTPS, no HTTP.