HTML 콘텐츠를 Google 스프레드 시트로 렌더링

Nov 14 2020

A1 셀에 HTML 콘텐츠가 있습니다. HTML 콘텐츠를 렌더링하고 렌더링 된 HTML 콘텐츠를 셀 B1에 추가하려고합니다.

예를 들어 A1에이 HTML이있는 경우

<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

나는 당신의 목표를 다음과 같이 믿습니다.

  • Google Apps Script를 사용하여 HTML 데이터를 일반 텍스트 데이터로 변환하려고합니다.

수정 지점 :

  • getContent()HtmlOutput 클래스 의 메서드 는 HTML 데이터를 반환합니다. Ref 이것이 문제의 원인이라고 생각했습니다.

HTML 태그없이 렌더링 된 텍스트를 검색하기 위해이 답변에서는 Drive API v2의 "Files : insert"방법을 사용하여 HTML 데이터를 Google Document로 변환하여 텍스트 데이터를 검색하는 것을 제안하고 싶습니다. (왜냐하면 Drive API의 버전은 Advanced Google 서비스에서 여전히 v2이기 때문입니다.)

스크립트를 수정하면 다음과 같이됩니다.

수정 된 스크립트 :

이 스크립트를 사용하기 전에 고급 Google 서비스에서 Drive API를 활성화하십시오 .

에서:
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 문서에서 텍스트 데이터를 검색합니다.
    3. 임시 파일을 제거하십시오.
    4. 텍스트 데이터를 셀에 넣습니다.

참조 :

  • getContent ()
  • 파일 : 삽입