ホーム DoRuby BoxのAPIを使って見よう。(その3)~EXCEL(VBA)から呼び出して、直接EXCELに結果を出力する
BoxのAPIを使って見よう。(その3)~EXCEL(VBA)から呼び出して、直接EXCELに結果を出力する
 

BoxのAPIを使って見よう。(その3)~EXCEL(VBA)から呼び出して、直接EXCELに結果を出力する

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

1.どうして、EXCEL(VBA)を使うのか

実は、下図のウェブサーバを作れる自信がないのと
出力結果を直接EXCELで加工してしまいたい!と思ったのがキッカケです。

enter image description here

1.1.作成イメージ

  1. EXCEL上にボタンを追加
  2. InternetExplorerを使用して、認証画面を表示  前回の説明(その1その2)参照
  3. 取得したいAPIを実行
  4. EXCELの別シートに出力
enter image description here

1.2.認可コード要求~アクセストークン取得までのイメージ

上記、項1.のウェブサーバを使用している部分を、VBAで実装して見よう。って事です。

enter image description here

2. 実際にどんなVBAコードを使えばよいか(一部)

2.1.BOXから認可コードを取得

InternetExplorerオブジェクトのNavigateメソッドを使って、認可コード要求をしてみます。

■以下はサンプルです。

    '-- IE を起動する
    Dim objBrowser As Object
    Set objBrowser = CreateObject("InternetExplorer.Application")

    With objBrowser
    '-- IEを表示
        .Visible = True

        '-- 表示位置を設定
        .Top = 100  'Y位置(上下)
        .Left = 200  'X位置(左右)
        .Width = 650 'IEウィンドウの幅
        .Height = 800  'IEウィンドウの高さ

        '-- 認証画面を表示
        .Navigate "https://account.box.com/api/oauth2/authorize?response_type=code&client_id=" & CLIENT_ID"

        '-- IEが表示されるまで待機
    Do While .Busy = True Or .readyState <> 4
        DoEvents
     Loop

    End With

2.2.アクセストークンを取得

次は、ブラウザを表示する必要がないため、msxml2.xmlhttpオブジェクトを使って、アクセストークン要求をしてみます。

■以下はサンプルです。

    '-- Access Token の取得 (HTTP POST 要求)
    Dim objXHttp1 As Object
    Set objXHttp1 = CreateObject("msxml2.xmlhttp")
    objXHttp1.Open "POST", "https://api.box.com/oauth2/token", False
    objXHttp1.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    objXHttp1.send "grant_type=authorization_code&code=" & strCode & "&client_id=" & CLIENT_ID & "&client_secret=" & CLIENT_SECRET

2.3.JSONをパースする

EXCEL(VBA)でJSONを扱うには、VBA-JSONをダウンロードして使用するのが、オススメです。
※レスポンス結果はUnicodeに変換しないと、文字化けしてしまいます。

■文字コード変換のサンプル

    Dim strResult As String
    strResult = StrConv(objXHttp2.responsebody, vbUnicode)

■VBA-JSONを使って、パースするサンプル

    Dim Folders As Object
    Set Folders = JsonConverter.ParseJson(strResult)

3.サンプル

サンプルを作ってみましたので、試してみたい方はご自由にどうぞ
サンプルEXCELをダウンロード(2019.07.29リンク誤り修正)
※VBAのコードは、現時点では非公開です。
※2017.10.18時点で、実践サンプルも公開中 (その4)(その5) の記事を確認してみて。

enter image description here

EXCELを表示したときの初期画面

enter image description here

今回は、Get Folder InfoGet Folder Itemsを実行してみて、EXCEL上に出力してみました。

まとめ

次回は、EXCEL(VBA)から、グループ情報をEXCELに整形して出力してみたいと思います。
管理者向けの管理コンソールから取得できる情報ですが、CSVダウンロード等の機能が現時点(2017.6.23)では無かったので作成してみようと思います。

Boxの販売パートナーもしてます。

enter image description here

お問い合わせは、こちら へ
BOXを使ったのアプリケーション開発も可能です。気軽にご連絡お待ちしております。

記事を共有

最近人気な記事