3年ほど前にEvernote for Windowsを操作するVBAマクロについて記事を書きました。
先日Evernoteの開発者サイトを眺めていたところ、COMもサポートしている「Evernote Cloud SDK 2.0 for Windows」を見つけたので、さっそくVBAから試してみることにしました。
Evernote Cloud SDKのインストール
VBAマクロからSDKを使ってEvernote APIを呼び出す前に、まずはCOM版のSDKをインストールする必要があります。
- 「Evernote Cloud SDK for Windows」にアクセスします。
- 「COM Setup」から「EvernoteSDK_COMSetup.msi」をダウンロードします。
- 手順2.でダウンロードしたインストーラーを実行し、指示に従ってSDKをインストールします。このとき「WindowsによってPCが保護されました」との警告が出て実行がブロックされた場合は、プロパティから「このファイルは他のコンピューターから取得したものです…」の「許可する」チェックをオンにしてください。
Developer Tokenの取得
SDKのインストールが終わったら、次はAPIの呼び出しに必要なDeveloper Tokenを取得します。
- 「Developer Tokens」にアクセスし、Evernoteにログインします。
- 画面に表示される「Developer Token」と「NoteStore URL」をメモ帳などにコピーしておきます。
Evernote Cloud SDKを使ったVBAマクロ
Developer Tokenが取得できたら、いよいよSDKを使ってVBAマクロからAPIを呼び出してみます。
※ マクロを実行する前に「参照設定」から「Evernote Cloud SDK for Windows」を追加してください。
※ 下記コード中の「Developer Token」と「NoteStore URL」はそれぞれ自分で取得したものに置き換えてください。
Option Explicit Public Sub Sample() '※[Evernote Cloud SDK for Windows]要参照 Dim enNotebooks As Object ' EvernoteSDK.ENCollection Dim i As Long Const DeveloperToken As String = "(Developer Token)" Const NoteStoreUrl As String = "(NoteStore URL)" With New EvernoteSDK.ENSessionForCOM .SetSharedSessionDeveloperToken DeveloperToken, NoteStoreUrl If .sharedSession.IsAuthenticated = False Then Exit Sub 'ノートブック名の列挙 Set enNotebooks = .sharedSession.ListNotebooksForCOM If enNotebooks.Count > 0 Then For i = 1 To enNotebooks.Count Debug.Print enNotebooks(i).Name Next End If End With End Sub
問題なくAPIの呼び出しが行われると、下図のようにノートブック名がイミディエイト ウィンドウに表示されます。
SDKをインストールする必要はありますが、この記事で紹介している方法と違って、Evernote for Windowsをインストールする必要はありません。
また、Evernote for Windowsを使う方法はあくまでもローカルに保存されたデータを対象としているため、同期されていないデータに関しては取得することができませんが、今回の方法は、SDKがラッパーとなってEvernote APIの呼び出しが行われるため、取得されるデータは常に最新のものです。
注意点
GitHubにはVBAマクロのサンプルも用意されていますが、私の環境では動きませんでした。
そもそも、サンプルによればSetSharedSessionConsumerKeyメソッドで「Consumer Key」と「Consumer Secret」を指定すれば認証できるはずですが、いろいろ試してみても認証できませんでした。
そのため、上記コードではDeveloper Tokenを使って認証するようにしています。
また、このSDKは参照設定していても下図の通りメンバー表示されません。
SDKの元のソースコードを見て各オブジェクトのプロパティやメソッドを確認することがほぼ必須になるため、COM版のEvernote Cloud SDKを使ったVBAマクロを書く際には“気合が必要”だと思いますので、試してみようという方はその点だけご注意ください。
この記事へのコメントはありません。