Evernote をJavaScript から使って自動化します。
#!/usr/bin/env osjscript app = Application("Evernote")
Evernote も通常通り Application でオブジェクトをブリッジします。
アカウントデータにアクセスする
ただ、いつの通りJSで書いててもあきるので、先に同等のAppleScriptを掲載しておきます。
tell application "Evernote" set a to name of account info 1 set c to upload used of account info 1 set d to c / 1024 / 1024 set e to round d rounding to nearest set f to e as string set g to "今月は" & e & "% 使用 " set j to upload reset date of account info 1 as string set g to g & "次回リセット:" & j display dialog g end tell
これとほぼ同じことをするJavaScriptが以下のとおりになります。
JavaScript でアカウント情報にアクセスします。
app = Application("Evernote") account = app.accounts["takuya_XXXXt"] //account.accountType() //account.name() //account.uploadLimit() account.uploadUsed() //以下略
ただ、せっかくJavaScript なのでDateオブジェクトにこだわってみたり
app = Application("Evernote") account = app.accounts["takuya_XXXXt"] Date.prototype.format = function(){ var a = this date = a.getFullYear() date += "/" date += ("00"+ (a.getMonth()+1)).substr(-2) date += "/" date += ("00"+a.getDate()).substr(-2) date += " " date += ("00"+a.getHours()).substr(-2) date += ":" date += ("00"+a.getMinutes()).substr(-2) date += ":" date += ("00"+a.getSeconds()).substr(-2) date += " " date += a.toString().match( /\((.+)\)/)[1] return date } a = Date.parse(str) a = new Date(a) console.log( "ユーザーID : " + account.name() ) console.log( "当月通信量 : " + (Math.round( (account.uploadUsed()/1024/1024)*100 )/100 ) + "MB" ) console.log( "次回リセット : " + a .format() )
後はコレを実行します。
osascript -l JavaScript evernote_account.js
実行結果
takuya@rena:~/Desktop$ ./evernote_account.js ユーザーID : takuya_XXX 当月通信量 : 81.96MB 次回リセット : 2015/01/02 17:00:00 JST
Evernote の自動化スクリプトを作るときのコツ
EvernoteをScript Editor で扱うと、応答待ちにフリーズすることが多い。
Evernote が未知のオブジェク呼び出しでエラーを返さずに、ダンマリするからみたい。
そのために、いつでもすぐ、中止できるようScript Editorではなく、ターミナルから、osascript経由で実行する。
Script Editorで作ってフリーズすると、終了が非常に面倒なのでした。
スクリプト・エディタ強制終了⇛Evernote強制終了⇛アクティビティモニタ⇛jlx を強制終了
なので、osascript からトライ・アンド・エラーするほうが効率的でした。