2017-12-23 26 views
1

Googleドキュメントアドオンで見出し(セクション)をカウントすることはできますか?次の画像は、私が望むものを示しています。セクションGoogleドキュメント内の単語数

screenshot

サイドバーやその他の方法で情報をカウント単語のこの種を表示する方法はありますか?

+0

[THIS](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章では、その単語数はその2つのセクションのワードカウントの合計よりも大きい理由は、その最初の部分、前にいくつかの「イントロ」通常のテキストを持っています。

スクリプト:

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