Class HtmlOutput

HtmlOutput

Um objeto HtmlOutput que pode ser veiculado em um script. Por motivos de segurança, os scripts não podem retornar HTML diretamente a um navegador. Em vez disso, eles precisam higienizar o arquivo para que ele não possa realizar ações maliciosas. Você pode retornar HTML limpo assim:

function doGet() {
  return HtmlService.createHtmlOutput('<b>Hello, world!</b>');
}
O código no HtmlOutput pode incluir JavaScript e CSS incorporados. Esse é um JavaScript padrão do lado do cliente que manipula o DOM, não o Apps Script. Todo esse conteúdo é colocado em sandbox usando sandbox de iframe. Para mais informações, consulte o guia de restrições no serviço HTML.

Métodos

MétodoTipo de retornoBreve descrição
addMetaTag(name, content)HtmlOutputAdiciona uma metatag à página.
append(addedContent)HtmlOutputAdiciona novo conteúdo ao conteúdo deste HtmlOutput.
appendUntrusted(addedContent)HtmlOutputAdiciona novo conteúdo ao conteúdo dessa HtmlOutput usando a codificação de escape contextual.
asTemplate()HtmlTemplateRetorna um HtmlTemplate com suporte a esse HtmlOutput.
clear()HtmlOutputLimpa o conteúdo atual.
getAs(contentType)BlobRetorna os dados dentro deste objeto como um blob convertido para o tipo de conteúdo especificado.
getBlob()BlobRetorne os dados dentro deste objeto como um blob.
getContent()StringRecebe o conteúdo dessa HtmlOutput.
getFaviconUrl()StringExtrai o URL de uma tag de link de favicon adicionada à página chamando setFaviconUrl(iconUrl).
getHeight()IntegerRecebe a altura inicial da caixa de diálogo personalizada nos apps Documentos, Planilhas ou Formulários Google.
getMetaTags()HtmlOutputMetaTag[]Recebe uma matriz de objetos que representam metatags adicionadas à página chamando addMetaTag(name, content).
getTitle()StringRecebe o título da página de saída.
getWidth()IntegerRecebe a largura inicial da caixa de diálogo personalizada nos apps Documentos, Planilhas ou Formulários Google.
setContent(content)HtmlOutputDefine o conteúdo dessa HtmlOutput.
setFaviconUrl(iconUrl)HtmlOutputAdiciona uma tag de link para um ícone à página.
setHeight(height)HtmlOutputDefine a altura inicial da caixa de diálogo personalizada nos apps Documentos, Planilhas ou Formulários Google.
setSandboxMode(mode)HtmlOutputEsse método agora não tem efeito. Antes, ele definia o sandbox mode usado para scripts do lado do cliente.
setTitle(title)HtmlOutputDefine o título da página de saída.
setWidth(width)HtmlOutputDefine a largura inicial de uma caixa de diálogo personalizada nos Documentos, Planilhas ou Formulários Google.
setXFrameOptionsMode(mode)HtmlOutputDefine o estado do cabeçalho X-Frame-Options da página, que controla a prevenção de clickjacking.

Documentação detalhada

addMetaTag(name, content)

Adiciona uma metatag à página. As metatags incluídas diretamente em um arquivo HTML do Apps Script são ignoradas. Somente as seguintes metatags são permitidas:

<meta name="apple-mobile-web-app-capable" content="..."/>
<meta name="google-site-verification" content="..."/>
<meta name="mobile-web-app-capable" content="..."/>
<meta name="viewport" content="..."/>
const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.addMetaTag('viewport', 'width=device-width, initial-scale=1');

Parâmetros

NomeTipoDescrição
nameStringO valor do atributo de nome da metatag.
contentStringO valor do atributo de conteúdo da metatag.

Retornar

HtmlOutput: esta saída, para encadeamento.


append(addedContent)

Adiciona novo conteúdo ao conteúdo deste HtmlOutput. Use essa opção apenas para conteúdo de uma fonte confiável, porque ela não é codificada.

// Log "<b>Hello, world!</b><p>Hello again, world.</p>"
const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.append('<p>Hello again, world.</p>');
Logger.log(output.getContent());

Parâmetros

NomeTipoDescrição
addedContentStringO conteúdo a ser anexado.

Retornar

HtmlOutput: esta saída, para encadeamento.

Gera

Error: se o HTML estiver incorreto.

Consulte também


appendUntrusted(addedContent)

Adiciona novo conteúdo ao conteúdo dessa HtmlOutput usando a codificação de escape contextual.

Esse método gera corretamente o conteúdo com base no estado atual do HtmlOutput, para que o resultado seja uma string segura sem marcação ou efeitos colaterais. Use isso em vez de usar append sempre que adicionar conteúdo de uma fonte não confiável, como de um usuário, para evitar permitir acidentalmente um bug de scripting em vários sites (XSS), em que o conteúdo ou a marcação anexada causa a execução inesperada de código.

// Log "<b>Hello, world!</b>&lt;p&gt;Hello again, world.&lt;/p&gt;"
const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.appendUntrusted('<p>Hello again, world.</p>');
Logger.log(output.getContent());

Parâmetros

NomeTipoDescrição
addedContentStringO conteúdo a ser anexado.

Retornar

HtmlOutput: esta saída, para encadeamento.

Gera

Error: se o HTML estiver muito malformado.

Consulte também


asTemplate()

Retorna um HtmlTemplate com suporte a esse HtmlOutput. Esse método pode ser usado para criar um modelo de forma incremental. Mudanças futuras no HtmlOutput também afetam o conteúdo do HtmlTemplate.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
const template = output.asTemplate();

Retornar

HtmlTemplate: o novo HtmlTemplate.


clear()

Limpa o conteúdo atual.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.clear();

Retornar

HtmlOutput: esta saída, para encadeamento.


getAs(contentType)

Retorna os dados dentro deste objeto como um blob convertido para o tipo de conteúdo especificado. Esse método adiciona a extensão apropriada ao nome do arquivo, por exemplo, "myfile.pdf". No entanto, ele pressupõe que a parte do nome do arquivo que segue o último ponto (se houver) é uma extensão existente que precisa ser substituída. Consequentemente, "ShoppingList.12.25.2014" se torna "ShoppingList.12.25.pdf".

Para conferir as cotas diárias de conversões, consulte Cotas dos Serviços do Google. Os domínios do Google Workspace recém-criados podem estar temporariamente sujeitos a cotas mais rígidas.

Parâmetros

NomeTipoDescrição
contentTypeStringO tipo MIME para a conversão. Para a maioria dos blobs, 'application/pdf' é a única opção válida. Para imagens nos formatos BMP, GIF, JPEG ou PNG, qualquer um dos formatos 'image/bmp', 'image/gif', 'image/jpeg' ou 'image/png' também é válido. Para um documento do Documentos Google, 'text/markdown' também é válido.

Retornar

Blob: os dados como um blob.


getBlob()

Retorne os dados dentro deste objeto como um blob.

Retornar

Blob: os dados como um blob.


getContent()

Recebe o conteúdo dessa HtmlOutput.

// Log "<b>Hello, world!</b>"
const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
Logger.log(output.getContent());

Retornar

String: o conteúdo veiculado.


getFaviconUrl()

Extrai o URL de uma tag de link de favicon adicionada à página chamando setFaviconUrl(iconUrl). As tags de link de favicon incluídas diretamente em um arquivo HTML do Apps Script são ignoradas.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setFaviconUrl('http://www.example.com/image.png');
Logger.log(output.getFaviconUrl());

Retornar

String: é o URL da imagem do favicon.


getHeight()

Recebe a altura inicial da caixa de diálogo personalizada nos apps Documentos, Planilhas ou Formulários Google. Se o HtmlOutput for publicado como um app da Web, esse método retornará null. Para redimensionar uma caixa de diálogo que já está aberta, chame google.script.host.setHeight(height) no código do lado do cliente.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setHeight(200);
Logger.log(output.getHeight());

Retornar

Integer: a altura, em pixels.


getMetaTags()

Recebe uma matriz de objetos que representam metatags adicionadas à página chamando addMetaTag(name, content). As metatags incluídas diretamente em um arquivo HTML do Apps Script são ignoradas.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.addMetaTag('viewport', 'width=device-width, initial-scale=1');

const tags = output.getMetaTags();
Logger.log(
    '<meta name="%s" content="%s"/>',
    tags[0].getName(),
    tags[0].getContent(),
);

Retornar

HtmlOutputMetaTag[]: uma matriz de objetos que representam as metatags adicionadas à página chamando addMetaTag(name, content).


getTitle()

Recebe o título da página de saída. O elemento HTML <title> é ignorado.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
Logger.log(output.getTitle());

Retornar

String: o título da página.


getWidth()

Recebe a largura inicial da caixa de diálogo personalizada nos apps Documentos, Planilhas ou Formulários Google. Se o HtmlOutput for publicado como um app da Web, esse método retornará null. Para redimensionar uma caixa de diálogo que já está aberta, chame google.script.host.setWidth(width) no código do lado do cliente.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setWidth(200);
Logger.log(output.getWidth());

Retornar

Integer: a largura em pixels.


setContent(content)

Define o conteúdo dessa HtmlOutput.

const output = HtmlService.createHtmlOutput();
output.setContent('<b>Hello, world!</b>');

Parâmetros

NomeTipoDescrição
contentStringO conteúdo a ser veiculado.

Retornar

HtmlOutput: esta saída, para encadeamento.

Gera

Error: se o HTML estiver incorreto.


setFaviconUrl(iconUrl)

Adiciona uma tag de link para um ícone à página. As tags de link de favicon incluídas diretamente em um arquivo HTML do script do app são ignoradas.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setFaviconUrl('http://www.example.com/image.png');

Parâmetros

NomeTipoDescrição
iconUrlStringO URL da imagem do favicon, com a extensão indicando o tipo de imagem.

Retornar

HtmlOutput: esta saída, para encadeamento.


setHeight(height)

Define a altura inicial da caixa de diálogo personalizada nos apps Documentos, Planilhas ou Formulários Google. Se o HtmlOutput for publicado como um app da Web, esse método não terá efeito. Para redimensionar uma caixa de diálogo que já está aberta, chame google.script.host.setHeight(height) no código do lado do cliente.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setHeight(200);

Parâmetros

NomeTipoDescrição
heightIntegerA nova altura em pixels. null resulta em um valor padrão.

Retornar

HtmlOutput: esta saída, para encadeamento.


setSandboxMode(mode)

Esse método agora não tem efeito. Antes, ele definia o sandbox mode usado para scripts do lado do cliente. Para proteger os usuários de HTML ou JavaScript maliciosos, o código do lado do cliente veiculado pelo serviço HTML é executado em um sandbox de segurança que impõe restrições ao código. Originalmente, esse método permitia que os autores de scripts escolhessem entre diferentes versões do sandbox, mas agora todos os scripts usam o modo IFRAME independente do modo de sandbox definido. Para mais informações, consulte o guia de restrições no serviço HTML.

O modo IFRAME impõe muito menos restrições do que os outros modos de sandbox e é executado mais rapidamente, mas não funciona em alguns navegadores mais antigos, incluindo o Internet Explorer 9. O modo sandbox pode ser lido em um script do lado do cliente inspecionando google.script.sandbox.mode. Essa propriedade retorna o modo real no cliente, que pode ser diferente do modo solicitado no servidor se o modo solicitado não tiver suporte no navegador do usuário.

<!-- Read the sandbox mode (in a client-side script). -->
<script>
  alert(google.script.sandbox.mode);
</script>

Parâmetros

NomeTipoDescrição
modeSandboxModeO modo sandbox a ser usado.

Retornar

HtmlOutput: esta saída, para encadeamento.


setTitle(title)

Define o título da página de saída. Para apps da Web, é o título de toda a página. Já para HtmlOutput mostrado no Planilhas Google, é o título da caixa de diálogo.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setTitle('My First Page');

Parâmetros

NomeTipoDescrição
titleStringO novo título.

Retornar

HtmlOutput: esta saída, para encadeamento.


setWidth(width)

Define a largura inicial de uma caixa de diálogo personalizada nos Documentos, Planilhas ou Formulários Google. Se o HtmlOutput for publicado como um app da Web, esse método não terá efeito. Para redimensionar uma caixa de diálogo que já está aberta, chame google.script.host.setWidth(width) no código do lado do cliente.

const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setWidth(200);

Parâmetros

NomeTipoDescrição
widthIntegerA nova largura em pixels. null resulta em um valor padrão.

Retornar

HtmlOutput: esta saída, para encadeamento.


setXFrameOptionsMode(mode)

Define o estado do cabeçalho X-Frame-Options da página, que controla a prevenção de clickjacking.

A configuração XFrameOptionsMode.ALLOWALL permite que qualquer site iframe a página. Portanto, o desenvolvedor precisa implementar a própria proteção contra clickjacking.

Se um script não definir um modo X-Frame-Options, o Apps Script vai usar o modo XFrameOptionsMode.DEFAULT como padrão.

// Serve HTML with no X-Frame-Options header (in Apps Script server-side code).
const output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

Parâmetros

NomeTipoDescrição
modeXFrameOptionsModeO modo de opções de XFrame a ser definido.

Retornar

HtmlOutput: esta saída, para encadeamento.