RubyからEvernoteAPIを使ってノートブックの取得と、ノートの作成をする

移転しました。

以下参考

APIキーの取得

ここでは、まず、自分の手元で動かしたかったので、「ClientApplication」でAPIキーを発行しました。
WebApplicationを選択した場合、OAuthでの認証が必要になるみたい。また次に試してみます。

Evernote API Overview | Evernote


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

cgs/evernote


アクセストークンの取得

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
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を叩くところをやってみる。