Evernoteの使い方

ジェイミー・ルービンの「毎日書いた量が自動的に記録される」スクリプトを導入する(2)

前回の続き。

ジェイミー・ルービンの「毎日書いた量が自動的に記録される」スクリプトを導入する(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にはこういう感じでノートが送信されます。なかなか面白いですね。

screenshot

考えてみると、Mac上で、Dropboxフォルダ+Automator+iCalトリガー+Applescript+シェルスクリプト、あたりを使えば似たような環境が作れるかもしれません。さすがに、それをゼロベースから構築していく余力はありませんが・・・。

ちなみに、もともとのgetWordCountを含め、その他のfunctionの機能について、私はほとんど理解しておりませんのであしからず。

コメントを残す