Posted at

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

More than 5 years have passed since last update.

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に似ているのでその感覚でとりあえずは大丈夫。