Renderizar conteúdo HTML em planilhas do Google

Nov 14 2020

Tenho um conteúdo HTML na célula A1, desejo renderizar o conteúdo HTML e adicionar o conteúdo HTML renderizado na célula B1

por exemplo, se eu tiver este HTML em A1

<label class="s-label mb4 d-block" for="wmd-input">
                    Body

                        <p class="s-description mt2">Include all the information someone would need to answer your question</p>
                </label>

Quero que a saída em B1 seja

Body
Include all the information someone would need to answer your question

eu tentei

  var htmlTarget = current.getRange('A1').getValue();
  var htmlOutput = HtmlService.createHtmlOutput(htmlTarget);
  var message = htmlOutput.getContent();
  database.getRange('B1').setValue(message);

E ele obtém o mesmo HTML e o cola com as tags sem renderizar nada

Respostas

1 Tanaike Nov 15 2020 at 06:29

Eu acredito que seu objetivo é o seguinte.

  • Você deseja converter os dados HTML em dados de texto simples usando o Google Apps Script.

Pontos de modificação:

  • O método da getContent()classe HtmlOutput retorna os dados HTML. Ref . Pensei que esse poderia ser o motivo do seu problema.

Para recuperar o texto renderizado sem as tags HTML, nesta resposta, gostaria de propor a recuperação dos dados de texto convertendo os dados HTML em documentos do Google usando o método "Arquivos: inserir" na API do Drive v2. (Porque a versão da API do Drive ainda é v2 no serviço avançado do Google.)

Quando seu script é modificado, ele se torna da seguinte maneira.

Script modificado:

Antes de usar este script, habilite a API do Drive nos serviços avançados do Google .

A partir de:
var htmlTarget = current.getRange('A1').getValue();
var htmlOutput = HtmlService.createHtmlOutput(htmlTarget);
var message = htmlOutput.getContent();
database.getRange('B1').setValue(message);
Para:
var htmlTarget = current.getRange('A1').getValue();
var blob = Utilities.newBlob(htmlTarget, MimeType.HTML);
var id = Drive.Files.insert({title: "sample", mimeType: MimeType.GOOGLE_DOCS}, blob).id;
var message = DocumentApp.openById(id).getBody().getText();
DriveApp.getFileById(id).setTrashed(true); //  or Drive.Files.remove(id);
database.getRange('B1').setValue(message);
  • Nesse script modificado, o seguinte fluxo é executado.
    1. Converta dados HTML em documentos do Google como um arquivo temporal.
    2. Recupere dados de texto de documentos do Google.
    3. Remova o arquivo temporal.
    4. Coloque os dados de texto na célula.

Referências:

  • obter conteudo()
  • Arquivos: inserir