前回の続き。
ジェイミー・ルービンの「毎日書いた量が自動的に記録される」スクリプトを導入する(1)
スクリプトを導入したのはいいけれども、カウントされるのが文字数ではなく、ワード数だった、というところまできました。
今回は、スクリプトを改造して、文字数のカウントに変更してみます。といっても、数行の変更だけです。
目的のfunctionを探す
まず、code.gsの中で、ワード数をカウントしている部分を見つけます。その部分をいじれば、望む結果が得られるでしょう。
きちんとネーミングされているなら、それらしい名前のfunctionがあるはず!と、眺めていくと「getWordCount」というfuncitonが見つかりました。コードでは最後の方に位置しています。
function getWordCount(text) { text = text.replace(/(^\s*)|(\s*$)/gi,""); text = text.replace(/[ ]{2,}/gi," "); text = text.replace(/\n /,"\n"); return text.split(' ').length; }
具体的に何が行われているのかはわかりませんが、与えられたテキストをreplace(置換)して、ワード数がカウントできるように処理されているのでしょう。最後の「return text.split(‘ ‘).length;」で返っていくのが、ワード数っぽい雰囲気です。
これを文字数に変えればOK。
Googleを検索したところ、「return text.length;」で良いことがわかりました。
というわけで、getWordCountにもともと入っている要素を全て削除するか、//でコメントアウトして、return text.length;を書き加えれば、OKそうです。
function getWordCount(text) { return text.length; }
改行と空白文字を取り除く
ちなみに、この状態だと改行や空白文字も文字数にカウントされます。それでもいいというかたは、上のスクリプトでもOKです。もし、改行や空白文字をカウントしたくなければ、もう少しだけコードに追記しましょう。
function getWordCount(text) { text = text.replace(/\r?\n/g, ""); text = text.replace(/\s+/g, ""); return text.length; }
正規表現がきちんとわかっていないので、Google検索から適当にコピペしました。もしかしたら微妙に間違っている部分があるかもしれませんが、一応コードは機能してくれます。
さいごに
これで望む環境ができました。
- SandBoxフォルダに存在している
- ドキュメントファイルにその日書いた文字数が
- 一日一回スプレッドシートに記録されます
また、Evernoteにはこういう感じでノートが送信されます。なかなか面白いですね。
考えてみると、Mac上で、Dropboxフォルダ+Automator+iCalトリガー+Applescript+シェルスクリプト、あたりを使えば似たような環境が作れるかもしれません。さすがに、それをゼロベースから構築していく余力はありませんが・・・。
ちなみに、もともとのgetWordCountを含め、その他のfunctionの機能について、私はほとんど理解しておりませんのであしからず。
コメントを残す