Lambdaでevernoteからnoteを取得してみた
4月 5, 2020
普段evernoteを使っているのですが、それを自動で集約してPDFにしたいなーとか、自動で投稿したいなーとか思ったのでLambdaで試してみました。
evernote apiの準備
evernote apiを使うには、認証トークンを取得する必要があります。
そこについては以下を参照ください。
https://codezine.jp/article/detail/10055
タイトルと本文を取得してみる
コードはこんな感じになります(Python)。
APIのリファレンスはこちら。
https://dev.evernote.com/doc/reference/
import json from evernote.api.client import EvernoteClient from evernote.edam.notestore.ttypes import NoteFilter, NotesMetadataResultSpec import sys import codecs sys.stdout = codecs.getwriter('utf_8')(sys.stdout) def lambda_handler(event, context): dev_token = "" client = EvernoteClient(token=dev_token) userStore = client.get_user_store() user = userStore.getUser() offset = 0 max_notes = 10 noteStore = client.get_note_store() notebooks = noteStore.listNotebooks() for n in notebooks: print n.name filter = NoteFilter(notebookGuid=n.guid) result_spec = NotesMetadataResultSpec(includeTitle=True) result_list = noteStore.findNotesMetadata(dev_token, filter, offset, max_notes, result_spec) for noteMeta in result_list.notes: print "\t- %s" % noteMeta.title note = noteStore.getNote(dev_token, noteMeta.guid, True, False, False, False) print "\t- %s" % note.content return { 'statusCode': 200, 'body': json.dumps('get note from evernote') }
直接ノートの中身を一気に取得することはできないようです。
最初に、
result_list = noteStore.findNotesMetadata(dev_token, filter, offset, max_notes, result_spec)
で、NotesMetadataListを取得します。
NotesMetadataListはNoteMetadataのリストになります。
Struct: NoteMetadata
Field Type guid Types.Guid
title string
contentLength i32
created Types.Timestamp
updated Types.Timestamp
deleted Types.Timestamp
updateSequenceNum i32
notebookGuid string
tagGuids list<Types.Guid>
attributes Types.NoteAttributes
largestResourceMime string
largestResourceSize i32
このメタデータが持っているguidを利用して、ノートの本体を取得していきます。
note = noteStore.getNote(dev_token, noteMeta.guid, True, False, False, False)
Struct: Note
Field Type guid Guid
title string
content string
contentHash string
contentLength i32
created Timestamp
updated Timestamp
deleted Timestamp
active bool
updateSequenceNum i32
notebookGuid string
tagGuids list<Guid>
resources list<Resource>
attributes NoteAttributes
tagNames list<string>
sharedNotes list<SharedNote>
restrictions NoteRestrictions
limits NoteLimits
これでタイトルと本文、後はタグなどの情報が取得できるようになりました。