それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Evernoteの自動化2 - ノート一覧

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(/キーワード/) } )// キーワードを持つタグを持つノートで絞込

これで、散らかったノートの整理をするための自動化の準備が整いました。

その他の記事はこちら

takuya-1st.hatenablog.jp