Para proteger os usuários contra HTML ou JavaScript maliciosos, o serviço HTML usa iframes para criar um sandbox de apps da Web ou interfaces de usuário personalizadas para o Documentos, o Planilhas e o Formulários Google. O serviço HTML não usa um sandbox em outras situações, como ao gerar o corpo de um e-mail. O sandbox impõe limitações ao código do lado do cliente.
Modo sandbox
Com exceção do IFRAME, todos os modos sandbox foram desativados. Os apps que usavam os modos NATIVE ou EMULATED agora usam automaticamente o modo IFRAME. Se o script foi desenvolvido com um modo mais antigo, siga as
instruções de migração para garantir que ele funcione
corretamente.
O setSandboxMode
método não tem efeito quando chamado.
Restrições no modo IFRAME
O modo sandbox IFRAME é baseado no
recurso de sandbox de iframe
no HTML5, usando as seguintes palavras-chave:
allow-same-originallow-formsallow-scriptsallow-popupsallow-downloadsallow-modalsallow-popups-to-escape-sandboxallow-top-navigation-by-user-activation- Esse atributo só é definido para projetos de script independentes.
A palavra-chave allow-top-navigation, que permite que o conteúdo navegue no contexto de navegação de nível superior, é restrita e não definida como um atributo no sandbox. Se você precisar redirecionar o script, adicione um link ou um botão para que o usuário possa agir.
Definir o atributo de destino do link
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 head
da página da Web:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS obrigatório para conteúdo ativo
"Ativo" conteúdo como scripts, folhas de estilo externas e XmlHttpRequests, precisa ser carregado por HTTPS, não HTTP.