[公式]Evernote API徹底活用レシピ

第19回共有機能の使い

ノート/ノートブックの共有機能

Evernoteには、ノートやノートブックを共有する機能があります。今回はその機能の使い方をPythonを例に説明します。

ノートの共有方法

まずノートの共有方法です。ノートを共有するときには、noteStore.shareNoteメソッドで共有キーを生成する必要があります。次に共有キーとguidとshardIdの組み合わせによって、共有用のURLを生成します。このURLを教えることで、他の人もノートを閲覧することができます。

shareKey = noteStore.shareNote(authToken, createdNote.guid)
url = "https://" + evernoteHost + "/shard/" + user.shardId + "/sh/" + createdNote.guid + "/" + shareKey

もし共有を終了したい場合にはstopSharingNoteメソッドを使用してください。もう一度同じノートを共有する場合には新しい共有キーが生成されますので、共有用URLも変更することになります。

ノートブックの共有方法

次にノートブックの共有についてですが、公開ノートブック(Public Notebook)と共有ノートブック(Shared Notebook)の2種類があります。公開ノートブックはノートブックに含まれているノートを世界中の誰にでも見られるようにする方法で、共有ノートブックは指定したユーザにのみ許可する方法です。

公開ノートブックの作り方は以下の通りです。

notebook = Types.Notebook()
notebook.name = "Public notebook"
notebook.published = True
notebook.publishing = Types.Publishing("test", None, False, "Publishing test")
createdNotebook = noteStore.createNotebook(authToken, notebook)
print "notebook: ", createdNotebook

通常のノートブック作成とは異なり、notebook.publishednotebook.publishingが必須になります。publishingに設定するTypes.Publishingは、第1引数が公開用のURLの断片を指定します。例えば上記のようにtestにすると、"https://{ホスト名}/pub/{ユーザ名}/test"が公開URLになります。既に使用している値を設定しようとするとエラーになりますので、ノートブックの名前を使用するなど、値が被らないようにしてください。第2引数と第3引数がソートのオプション、第4引数が公開ノートブックの説明になります。

共有ノートブックの作り方は以下の通りです。

notebook = Types.Notebook()
notebook.name = "Shared notebook"
createdNotebook = noteStore.createNotebook(authToken, notebook)
sharedNotebook = Types.SharedNotebook()
sharedNotebook.notebookGuid = createdNotebook.guid
sharedNotebook.email = "test@example.com"
sharedNotebook.requireLogin = True
sharedNotebook.notebookModifiable = False
createdSharedNotebook = noteStore.createSharedNotebook(authToken, sharedNotebook)

Types.SharedNotebookのインスタンスに共有したいノートブックのguidと共有したいユーザのEvernote登録メールアドレスを設定します。ログインの要求やノートブックの編集許可のオプション等もあります。ノートブックの編集許可はプレミアムユーザのみの機能です。もし2人以上のユーザに共有したい場合は、ユーザのメールアドレスごとにSharedNotebookを作成すれば良いです。

共有相手への連絡方法

注意しなければならないのは、ここでメールアドレスを設定しても、共有相手側には通知されません。メール等の手段で明示的に共有URLを相手に伝える必要があります。共有URLは"https://{ホスト名}/shard/{shardId}/share/{共有キー}"になります。

共有URLによってEvernoteアカウントにひもづけられたノートブックは、クライアント側では共有ノートブック一覧から見られます。プログラムで参照したい場合は、LinkedNotebooksメソッドを使います。例えば共有ノートブックの名前一覧を表示したければ以下のようにします。

linkedNotebooks = noteStore.listLinkedNotebooks(authToken)
for linkedNotebook in linkedNotebooks:
    print "  * ", linkedNotebook.shareName

今回は共有機能の使い方を説明しました。他者とノートやノートブックの共有を行うというのはこれからのEvernote連携を考えていく上で重要な機能の1つだと思いますのでぜひ使ってみてください。

おすすめ記事

記事・ニュース一覧