RubyからEvernoteAPIを使ってノートブックの取得と、ノートの作成をする
APIキーの取得
ここでは、まず、自分の手元で動かしたかったので、「ClientApplication」でAPIキーを発行しました。
WebApplicationを選択した場合、OAuthでの認証が必要になるみたい。また次に試してみます。
Evernote API Overview | Evernote
昔は、数日かかってたみたいですが、今は、すぐに発行してもらえました!
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
アクセストークンの取得
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に反映して、アクセストーンを取得する。
ノートブックの取得
存在するノートブックの取得
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}"
サンドボックスのノートを確認してみると、作成されました!!
まとめ
ノートの作成のときに、例外が多発したから、ちゃんと例外処理を書いたら、エラーが判明。例外処理って大事だなって改めて思った。
次にしたいこと
- WebサービスとしてEvernoteAPIを叩くところをやってみる。
参考URL
Related contents
TECH
2012.03.05
TECH
2012.04.19
TECH
2012.04.03
TECH
2012.03.21
TECH
2012.03.20
TECH
2012.02.01
TECH
2012.01.30
TECH
2017.06.25