Рендеринг HTML-содержимого в электронную таблицу Google

Nov 14 2020

У меня есть содержимое HTML в ячейке A1, я хочу отобразить содержимое HTML и добавить обработанное содержимое HTML в ячейку B1.

например, если у меня есть этот HTML в 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>

Я хочу, чтобы результат в B1 был

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

я пытался

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

И он получает тот же HTML и вставляет его с тегами, ничего не отображая.

Ответы

1 Tanaike Nov 15 2020 at 06:29

Я считаю вашей целью следующее.

  • Вы хотите преобразовать данные HTML в текстовые данные с помощью скрипта Google Apps.

Пункты модификации:

  • Метод getContent()класса HtmlOutput возвращает данные HTML. Ref Я подумал, что это может быть причиной вашей проблемы.

Чтобы получить отрисованный текст без тегов HTML, в этом ответе я хотел бы предложить получить текстовые данные путем преобразования данных HTML в документ Google с помощью метода «Файлы: вставить» в Drive API v2. (Потому что версия Drive API по-прежнему v2 в расширенной службе Google.)

Когда ваш скрипт изменяется, он становится следующим.

Измененный скрипт:

Прежде чем использовать этот скрипт, включите Drive API в расширенных сервисах Google .

Из:
var htmlTarget = current.getRange('A1').getValue();
var htmlOutput = HtmlService.createHtmlOutput(htmlTarget);
var message = htmlOutput.getContent();
database.getRange('B1').setValue(message);
К:
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);
  • В этом измененном сценарии выполняется следующий поток.
    1. Преобразуйте данные HTML в документ Google как временный файл.
    2. Получить текстовые данные из Google Document.
    3. Удалите временный файл.
    4. Поместите текстовые данные в ячейку.

Рекомендации:

  • getContent ()
  • Файлы: вставить