RubyのEvernote APIを使ってノートを作成する方法。
基本の流れ
- NoteStoreを作成
- コンテンツを作成
- ノートのインスタンスを作成
- 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に似ているのでその感覚でとりあえずは大丈夫。