Serviço HTML: restrições

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Para evitar que os usuários vejam HTML ou JavaScript malicioso, o Apps Script usa iframes para fazer o sandbox de apps da Web de serviço HTML de sandbox ou de interfaces do usuário personalizadas para Documentos, Planilhas e Formulários Google. O serviço HTML não usa um sandbox em outras situações, como a geração do corpo de um e-mail. O sandbox impõe limitações ao código do lado do cliente.

Modo sandbox

Todos os modos de sandbox agora são do pôr do sol, exceto IFRAME. Apps que usam modos de sandbox mais antigos agora usam o modo IFRAME mais recente automaticamente. Se você tiver scripts que foram desenvolvidos usando os modos mais antigos (NATIVE e EMULATED), siga as instruções de migração para garantir que eles funcionem corretamente no modo IFRAME.

O método setSandboxMode agora não tem efeito quando chamado.

Restrições no modo IFRAME

O modo sandbox IFRAME é baseado no recurso sandbox do iframe em HTML5, usando as seguintes palavras-chave:

  • allow-same-origin
  • allow-forms
  • allow-scripts
  • allow-popups
  • allow-downloads
  • allow-modals
  • allow-popups-to-escape-sandbox
  • allow-top-navigation-by-user-activation: esse atributo é definido apenas para projetos de script autônomos.

A palavra-chave allow-top-navigation, que permite que o conteúdo navegue pelo contexto de navegação de nível superior, é restrita e não é definida como um atributo no sandbox. Se for necessário redirecionar seu script, adicione um link ou um botão para o usuário realizar ações.

No modo IFRAME, é necessário definir o atributo de destino do link como _top ou _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>

Também é possível substituir esse atributo usando a tag <base> na seção de cabeçalho da página da Web incluída:

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

HTTPS necessário para conteúdo ativo

O conteúdo de "Active", como scripts, folhas de estilo externas e XmlHttpRequests, precisa ser carregado por HTTPS, não por HTTP.