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

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

更新日:2020.07.16 作成日:2012.03.04

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=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>" +
"<!DOCTYPE en-note SYSTEM &quot;http://xml.evernote.com/pub/enml.dtd&quot;>" +
"<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