LoginSignup
5
5

More than 5 years have passed since last update.

evernote-sdk-rubyを使ってEvernoteにノートを作成する

Posted at

RubyのEvernote APIを使ってノートを作成する方法。

基本の流れ

  1. NoteStoreを作成
  2. コンテンツを作成
  3. ノートのインスタンスを作成
  4. NoteStoreのcreateNoteを使ってノートを保存 という流れです。

ソース

require 'evernote-thrift'

# NoteStoreを取得
noteStoreTransport = Thrift::HTTPClientTransport.new('https://sandbox.evernote.com/shard/s1/notestore')
noteStoreProtocol = Thrift::BinaryProtocol.new(noteStoreTransport)
note_store = Evernote::EDAM::NoteStore::NoteStore::Client.new(noteStoreProtocol)

# 保存するコンテンツ。
# ENMLという形式になっている。
# 最初に空行があったりすると保存失敗するので注意。
content = %Q{<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
    <en-note>hello!!</en-note>}

# Noteのインスタンスを生成
# notebookGuidは指定なしの場合ユーザーのデフォルトのノートブックに保存される
note = Evernote::EDAM::Type::Note.new(
  title: 'ノートのタイトル'
  content: content,
  notebookGuid: '12345678-1234-1234-1234-123456789012'
)

begin
  # evernoteにノートを作成
  note_store.createNote(auth_token, note)
rescue => e
  # 保存に失敗するとEDAMUserExceptionなどの例外が取得できる
  p e
end

その他

例外はたとえばnote.titleはrequiredなのでtitleを設定しないでcreateNoteを叩くと

という例外が出ます。
xmlの形式がvalidじゃなかったりしても例外が出るのでどうしても保存されないときはそこら辺をチェックすると保存できたりします。

コンテンツはENMLという独特の形式で保存する必要があるが、HTMLに似ているのでその感覚でとりあえずは大丈夫。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5