Evernoteにアクセスして、ノートの一覧を取り出します
Evernote のノート一覧を取り出すには、まずノートブックを取得します。
var evn = Application("Evernote"); var inbox = evn.notebooks["明日の予定"]; notes = inbox.notes for(var i=0; i<notes.length;i++){ note = notes[i]; console.log( JSON.stringify ( { name : note.title() , body : note.noteLink() } ) ) }
Evernote の階層構造
Evernote application ⇛ Notebooks ⇛ Notes
このように階層構造が組まれているので、その通りアクセスすると、とても簡単に取り出すことが出来る。
上記の例では、この階層構造をたどって、ノートを取得しています。
ノートの検索
ノートの検索でも、ノート一覧を取り出すことが出来きます。
app = Application('Evernote') notes =app.findNotes("オブジェクト指向開発")
とても簡単ですね!
全ノートを取り出す
全部のノートを取得するには、検索条件をなしで呼び出せばいいようです。
app = Application('Evernote')
list = app.findNotes()
タグの中のノートを取り出す⇛ そのままでは出来ない
では、タグの一覧から、ノートを取り出すことができたら嬉しいのですが、タグは出来ない。
app = Application('Evernote') todo_tag =app.tags["TODO"] //タグ取得 todo_tag.notes //=>できない
これは、オートメーションが提供されていので出来ないようです。(2014-12-17:確認)
代わりにフィルタを使う
かわりに、「旅行」タグの付いたものを探すには、filterで絞込を行います
app = Application('Evernote') list = app.findNotes() // タグ未設定のものを落とし list = list.filter(function(e){ return e.tags().length >0 }) //旅行タグの付いているものに絞込 list = list.filter(function(e){ return e.tags().filter( function(t) { return t.name() == "旅行" } ).length>0 }) //または単純に文字列マッチで list = list.filter(function(e){ return e.tags()..join('').match(/旅行/)})
などとすることで、タグの中のノートの一覧を作ることが出来ました。
まとめ
app = Application('Evernote') notes =app.findNotes("キーワード") // キーワードで検索 notes =app.findNotes() // 全ノート app.notebook["議事録"].notes //ノートブックの全ノート Array.apply( null, app.findNotes()).filter( function(e){ e.tags().join().match(/キーワード/) } )// キーワードを持つタグを持つノートで絞込
これで、散らかったノートの整理をするための自動化の準備が整いました。