Office関連

Evernote Cloud SDKを使ったVBAマクロ

3年ほど前にEvernote for Windowsを操作するVBAマクロについて記事を書きました。

先日Evernoteの開発者サイトを眺めていたところ、COMもサポートしている「Evernote Cloud SDK 2.0 for Windows」を見つけたので、さっそくVBAから試してみることにしました。

Evernote Cloud SDKのインストール

VBAマクロからSDKを使ってEvernote APIを呼び出す前に、まずはCOM版のSDKをインストールする必要があります。

  1. Evernote Cloud SDK for Windows」にアクセスします。
  2. COM Setup」から「EvernoteSDK_COMSetup.msi」をダウンロードします。
  3. 手順2.でダウンロードしたインストーラーを実行し、指示に従ってSDKをインストールします。このとき「WindowsによってPCが保護されました」との警告が出て実行がブロックされた場合は、プロパティから「このファイルは他のコンピューターから取得したものです…」の「許可する」チェックをオンにしてください。

Developer Tokenの取得

SDKのインストールが終わったら、次はAPIの呼び出しに必要なDeveloper Tokenを取得します。

  1. Developer Tokens」にアクセスし、Evernoteにログインします。
  2. 画面に表示される「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マクロを書く際には“気合が必要”だと思いますので、試してみようという方はその点だけご注意ください。

「Google I/O 報告会 2017 東京」に参加しました。前のページ

Evernote Cloud SDKを使って特定の文字列が含まれるノートを検索するVBAマクロ次のページ

関連記事

  1. Office関連

    Excel 2013で駅すぱあとWebサービス APIの「経路探索」を使ってみました。

    「「駅すぱあとWebサービス API無償提供」を利用してみました。」で…

  2. Office関連

    Officeアプリケーションの「最近使用したファイル」を削除するVBScript

    WordやExcel等のOfficeアプリケーションでは、下記サイトに…

  3. Office関連

    表の特定の列に対して処理を行うWordマクロ

    2015/6/12 追記:下記で紹介しているコードはセルの結合を考…

  4. Office関連

    [Word 2013]表形式のデータ入力にはコレが便利!?「コンテンツ繰り返しコントロール」の紹介

    Wordにはユーザー入力フォームを作るのに便利な機能「コンテンツ コン…

  5. Excel

    SeleniumBasic(Selenium VBA)がMicrosoft Edgeに対応しました。…

    言わずと知れたWebブラウザーの自動制御ツール「Selenium」のV…

  6. Office関連

    [VBA]ユーザーフォーム上のコンボボックスでオートコンプリート機能を実装する方法

    MSDNフォーラムに「ユーザーフォーム上のコンボボックスで、任意の文字…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP