2017-12-23 29 views
1

Google 문서 부가 기능으로 제목 당 단어 수를 계산할 수 있습니까? 다음 이미지는 내가 원하는 것을 보여줍니다.섹션 Google 문서 도구의 단어 수

screenshot

단어 이런 종류의 사이드 바 또는 기타 방법으로 정보를 계산 표시하는 방법이 있나요?

+0

[이]는 (https://stackoverflow.com/questions/14010446/word-and-character-count-using-jquery) 당신은 ?? 확인을 찾고 될 수 있습니다 무엇을 그것. – SudeepS

+0

고마워요,하지만 그건 제가 찾고있는 것이 아닙니다. 내가 원하는 것은 섹션 단어 수 (동일한 문서에 대해 여러 단어 수를 갖게 됨)입니다. 이미지 링크를 참조 할 수 있습니다. – Emily

답변

1

다음은이 작업을 수행하는 스크립트입니다. Google 문서 도구에서 표제는 getHeading() 속성으로 구분되는 일종의 단락입니다. 제목, 부제, h1 ... h6, 정상 등 9 단계의 단락이 있습니다.

스크립트는 먼저 각 단락의 수준과 각 단락의 단어 수를 찾습니다. 그런 다음 각 단락마다 이후의 "일반"단락을 반복하여 단어 수를 추가합니다. 이 레벨은 같거나 높은 레벨의 다른 단락에 도달하면 중지됩니다.

제목의 단어 자체는 단어 수에 포함되어서는 안되지만 원하는 경우 변경할 수 있습니다.

추가 기능이 아니기 때문에 정보를 표시 할 사이드 바가 없습니다. 끝에 결과를 추가하고 각 제목을 복사 한 다음 텍스트에 (X 단어)를 추가합니다. 그것은 다음과 같습니다

내 샘플 텍스트에서
Book title (108 words) 
Chapter 1 (54 words) 
    Section 1 (15 words) 
    Section 2 (20 words) 
Chapter 2 (54 words) 
    Section 1 (54 words) 
    Subsection 1 (31 words) 
    Subsection 2 (13 words) 

는, 제 1의 단어 수는 두 부분의 단어 개수의 합보다 높은 이유는 자사의 첫 번째 섹션 전에 몇 가지 "소개"일반 텍스트가 있습니다.

스크립트 :

function countPerSection() {     
    var body = DocumentApp.getActiveDocument().getBody(); 
    var para = body.getParagraphs(); 
    var levels = para.map(function(p) { 
    return [DocumentApp.ParagraphHeading.TITLE, 
      DocumentApp.ParagraphHeading.SUBTITLE, 
      DocumentApp.ParagraphHeading.HEADING1, 
      DocumentApp.ParagraphHeading.HEADING2, 
      DocumentApp.ParagraphHeading.HEADING3, 
      DocumentApp.ParagraphHeading.HEADING4, 
      DocumentApp.ParagraphHeading.HEADING5, 
      DocumentApp.ParagraphHeading.HEADING6, 
      DocumentApp.ParagraphHeading.NORMAL].indexOf(p.getHeading()); 
    }); 
    var paraCounts = para.map(function (p) { 
    return p.getText().split(/\W+/).length; 
    }); 

    var counts = []; 
    for (var i = 0; i < para.length; i++) { 
    var count = 0; 
    for (var j = i+1; j < para.length; j++) { 
     if (levels[j] <= levels[i]) { 
     break; 
     } 
     if (levels[j] == 8) { 
     count += paraCounts[j]; 
     } 
    } 
    counts.push(count); 
    } 

    for (var i = 0; i < para.length; i++) { 
    if (levels[i] < 8) { 
     body.appendParagraph(para[i].copy()).appendText(" (" + counts[i] + " words)"); 
    } 
    } 
} 
+0

이것은 정확히 내가 필요한 것 같습니다. 나는 그저 효과가없는 것처럼 보일뿐입니다. 스크립트는 어디에 저장해야하며 어떻게 실행합니까? 고맙습니다 .. – Emily

+0

도구> 스크립트 편집기로 이동하십시오. 코드를 입력하십시오. 저장을 클릭하십시오. 실행을 클릭하십시오. 자세한 내용은 https://developers.google.com/apps-script/overview에서 자습서를 참조하십시오. – FTP

+0

빠른 답변 감사합니다. 나는 튜토리얼을 확인하고 모든 것을했다. 내 오류가 발생합니다 :'TypeError : null의 getBody 메서드를 호출 할 수 없습니다. (줄 2, 파일 "코드") – Emily