Google文档Apps脚本中的字数统计功能

时间:2015-10-26 04:49:33

标签: google-apps-script google-docs google-docs-api

Google Apps Scrips中是否有一种方法可以从Google文档中返回单词计数?

让我们说我正在撰写一份对字数有特定限制的报告。它非常精确,它准确地说明了1.8k - 2k字(是的,它不只是一个案例,而是很多......)

在Microsoft Office Word中,页面底部有一个方便的状态栏,可以自动更新字数,因此我尝试使用Google Apps Scrips制作一个。

编写一个从当前文档中删除整个文本的函数,然后在一分钟内反复计算几次对我来说感觉像是胡说八道。这完全没有效率,它让CPU无所事事,但我无法在Docs Reference中找到该字数的功能。

Ctr + Shift + C打开一个包含它的弹出窗口,这意味着一个返回Google文档总字数的函数肯定存在......

但我无法找到它! 叹了口气......我花了几个小时挖掘谷歌,但我根本找不到它,请帮助!

2 个答案:

答案 0 :(得分:4)

写了一个可能有帮助的小片段。

function myFunction() {
  var text = DocumentApp.getActiveDocument().getBody().getText();
  var words = text.match(/\S+/g);
  Logger.log(words.length);
}

答案 1 :(得分:0)

我认为这个功能可能涵盖了大多数英文字符字数统计的情况。如果我忽略了什么,请评论。

function testTheFunction(){
  var myDoc = DocumentApp.openByUrl('https://docs.google.com/document/d/?????/edit');
  Logger.log(countWordsInDocument(myDoc));    
}

function countWordsInDocument(theDoc){
  var theText = theDoc.getBody().getText();
  var theRegex = new RegExp("[A-Za-z]") // or include other ranges for other languages or numbers
  var wordStarted = false;
  var theCount = 0;
  for(var i=0;i<theText.length;i++){
    var theLetter = theText.slice(i,i+1);
    if(theRegex.test(theLetter)){
      if(!wordStarted){
        wordStarted=true;
        theCount++;
      }
    }else if(wordStarted){
      wordStarted=false;
    }
  }
  return theCount;
}