RubyからEvernoteAPIを使ってノートブックの取得と、ノートの作成をする
移転しました。
以下参考
- EvernoteのAPIをRubyから叩きたい - kk_Atakaの日記
- OS-X LionでrubyからEvernoteをたたく環境を作ってみる - ksworks.org
- まぁるいしっぽ:Rubyで Evernoteを検索
- Evernote APIを使ってアプリケーションを作る例 (Ruby) - Masatomo Nakano Blog
APIキーの取得
ここでは、まず、自分の手元で動かしたかったので、「ClientApplication」でAPIキーを発行しました。
WebApplicationを選択した場合、OAuthでの認証が必要になるみたい。また次に試してみます。
Evernote API Overview | Evernote
Evernote API Overview | Evernote Photo by meganii
昔は、数日かかってたみたいですが、今は、すぐに発行してもらえました!
sandboxでのユーザ登録(2012/03/6追記)
Evernoteからは、まずsandbox(砂場)でアプリケーションをテストしてから、本番のアカウント使ってねっていうことでAPIキーをもらえるみたい。
っていうことで、まずは、https://sandbox.evernote.comでsandbox用のアカウントを作ります。
gemのインストール
以下のリンクから、EvernoteSDKをダウンロードできて、サンプルプログラムとかも入っています。
http://evernote.s3.amazonaws.com/api/evernote-api-1.20.zip
が、ゆとりは、まずgemを探します笑。
ちょうど、evernoteのgemがあったので、インストール。
gem install evernote
evernote | RubyGems.org | your community gem host
アクセストークンの取得
require 'rubygems' require 'evernote' user_store_url = "https://sandbox.evernote.com/edam/user" config = { :username => 'YOUR_USERNAME', :password => 'YOUR_PASSWORD', :consumer_key => 'YOUR_CONSUMER_KEY', :consumer_secret => 'YOUR_CONSUMER_SECRET' } user_store = Evernote::UserStore.new(user_store_url, config) auth_result = user_store.authenticate user = auth_result.user auth_token = auth_result.authenticationToken puts "Authentication was successful for #{user.username}" puts "Authentication token = #{auth_token}"
取得したAPIキーを、configに反映して、アクセストーンを取得
evernote_ruby ― tmux ― 80×24 Photo by meganii
ノートブックの取得
存在するノートブックの取得
note_store_url = "http://sandbox.evernote.com/edam/note/#{user.shardId}" note_store = Evernote::NoteStore.new(note_store_url) notebooks = note_store.listNotebooks(auth_token) puts "Found #{notebooks.size} notebooks:" notebooks.each { |notebook| puts " * #{notebook.name}"}
ノートの作成
ノートの新規作成。
ノートの作成についてはここを参考にしました。
Atsushi's Homepage 〜 Evernote API を使ってみる
note = Evernote::EDAM::Type::Note.new() note.title = "test" defaultNotebook = note_store.getDefaultNotebook(auth_token) note.notebookGuid = defaultNotebook.guid content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml.dtd\">" + "<en-note>" + "note" + "</en-note>" note.content = content #note.created = Time.now.getutc #note.updated = note.created puts "#{note}" puts note_store begin createdNote = note_store.client.createNote(auth_token, note) rescue Evernote::EDAM::Error::EDAMUserException => ex parameter = ex.parameter errorCode = ex.errorCode errorText = Evernote::EDAM::Error::EDAMErrorCode::VALUE_MAP[errorCode] puts "Authentication failed (parameter: #{parameter} errorCode: #{errorText})" exit(1) end puts "#{createdNote.guid}"
サンドボックスのノートを確認してみると、作成されました!!
https://sandbox.evernote.com
まとめ
ノートの作成のときに、例外が多発したから、ちゃんと例外処理を書いたら、エラーが判明。例外処理って大事だなって改めて思った。
次にしたいこと
- WebサービスとしてEvernoteAPIを叩くところをやってみる。