先日EvernoteのAPIを触る機会があったのでまとめておきます。EvernoteのAPIをうまく使えば、いろいろな情報を自動的に記録していくことも簡単に出来るのでなかなか良さげです。

まず、EvernoteのAPIを利用するためにはOAuthで認証する必要があります。ただし、自分自身のアカウントに対する操作だけであればデベロッパートークンを取得するだけでOKです。
参考:認証 - Evernote Developers
Rubyからの利用にはThriftで実装された低レベルなevernote-sdk-rubyを使う方法もありますが、基本的には高レベルなラッパーであるevernote_oauthというgemを利用するのが良いでしょう。
evernote_oauthを使う場合、基本的な使い方はこんな感じでしょうか。
(以下の例ではデベロッパートークンを使ってます)
この例だと、sasata299's notebookというnotebookにどんどんnoteが記録されていきます。
ただ、このevernote_oauthはRuby1.8では動作しないので注意してください。今回はRuby1.8で使いたかったのでRuby1.8に対応させてみました。利用は各自の責任でお願いします。
まず、EvernoteのAPIを利用するためにはOAuthで認証する必要があります。ただし、自分自身のアカウントに対する操作だけであればデベロッパートークンを取得するだけでOKです。
参考:認証 - Evernote Developers
Rubyからの利用にはThriftで実装された低レベルなevernote-sdk-rubyを使う方法もありますが、基本的には高レベルなラッパーであるevernote_oauthというgemを利用するのが良いでしょう。
evernote_oauthを使う場合、基本的な使い方はこんな感じでしょうか。
(以下の例ではデベロッパートークンを使ってます)
module EvernoteExtension # noteを作成する def save_to_evernote(title, content, tags, guid = default_notebook_guid) client = EvernoteOAuth::Client.new(:token => token) note_store = client.note_store note = Evernote::EDAM::Type::Note.new note.title = title note.content = render_to_string 'evernote_template', :content => content, :layout => false note.tagNames = [tags] note.notebookGuid = guid # どのnotebookにnoteを作成するか note_store.createNote(note) end # notebookのguidを返す def default_notebook_guid notebook = note_store.listNotebooks.select {|notebook| notebook.name == notebook_name }.first if notebook.present? notebook.guid else notebook = Evernote::EDAM::Type::Notebook.new notebook.name = notebook_name note_store.createNotebook(notebook).guid end end private def notebook_name "sasata299's notebook" end def token YOUR_DEVELOPER_TOKEN end def note_store @note_store ||= EvernoteOAuth::Client.new(:token => token).note_store end end
この例だと、sasata299's notebookというnotebookにどんどんnoteが記録されていきます。
ただ、このevernote_oauthはRuby1.8では動作しないので注意してください。今回はRuby1.8で使いたかったのでRuby1.8に対応させてみました。利用は各自の責任でお願いします。