Servicio HTML: Restricciones

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

A fin de proteger a los usuarios de la entrega de código HTML o JavaScript malicioso, Apps Script usa iframes para ejecutar aplicaciones web de servicio HTML en la zona de pruebas o interfaces de usuario personalizadas para Documentos, Hojas de cálculo y Formularios de Google. (El servicio HTML no usa una zona de pruebas en otras situaciones, como cuando se genera el cuerpo de un correo electrónico). La zona de pruebas impone limitaciones en el código del cliente.

Modo de zona de pruebas

Todos los modos de la zona de pruebas están desactivados, 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 de forma correcta en el modo IFRAME.

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

Restricciones en el modo IFRAME

El modo de zona de pruebas IFRAME se basa en la función de zona de pruebas de iframe en HTML5 mediante las siguientes palabras clave:

  • allow-same-origin
  • allow-forms
  • allow-scripts
  • allow-popups
  • allow-downloads
  • allow-modals
  • allow-popups-to-escape-sandbox
  • allow-top-navigation-by-user-activation: Este atributo solo está configurado para proyectos de secuencias de comandos independientes.

La palabra clave allow-top-navigation, que permite al contenido navegar 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 la acción.

En el modo IFRAME, debes establecer el atributo de destino del vínculo en _top o _blank:

Código.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 la sección head 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

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