Para proteger os usuários contra HTML ou JavaScript mal-intencionado, o serviço HTML usa iframes para colocar em sandbox apps da Web ou interfaces do usuário personalizadas para Google Docs, Google Planilhas e 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 de sandbox foram descontinuados. 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 método setSandboxMode
não tem mais efeito quando é chamado.
Restrições no modo IFRAME
O modo sandbox IFRAME é baseado no recurso de iframe sandbox em 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 independente.
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 na sandbox. Se for preciso redirecionar o script, adicione um link ou um botão para o
usuário realizar uma ação.
Definir o atributo de destino do link
No modo IFRAME, defina 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
O conteúdo"ativo", como scripts, folhas de estilo externas e XmlHttpRequests, precisa ser carregado por HTTPS, não HTTP.