Servicio HTML: restricciones

Para proteger a los usuarios de que se les entregue HTML o JavaScript malicioso, Apps Script usa iframes para crear una zona de pruebas de apps web de servicio de HTML o interfaces de usuario personalizadas para Documentos, Hojas de cálculo y Formularios de Google. (El servicio de HTML no usa una zona de pruebas en otras situaciones, como la generación del 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 zona de pruebas ahora dejarán de estar disponibles, excepto IFRAME. Las apps que usan modos de zona de pruebas más antiguos ahora usan el modo IFRAME más reciente automáticamente. Si tienes secuencias de comandos que se desarrollaron con los modos anteriores (NATIVE y EMULATED), debes seguir las instrucciones de migración para asegurarte de que funcionen correctamente en el modo IFRAME.

El método setSandboxMode ahora no tiene efecto cuando se lo llama.

Restricciones en el modo IFRAME

El modo de zona de pruebas de IFRAME se basa en la función de zona de pruebas de iframe en HTML5 y usa 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á restringida y no se establece como un atributo en la zona de pruebas. Si necesitas redireccionar tu secuencia de comandos, agrega un vínculo o un botón para que el usuario realice 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 con la etiqueta <base> dentro de la sección head de la página web que lo contiene:

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

HTTPS obligatorio para el contenido activo

El contenido"activo", como las secuencias de comandos, las hojas de estilo externas y los XmlHttpRequests, se debe cargar a través de HTTPS, no de HTTP.