その他
    ホーム 技術発信 DoRuby BoxのAPIを使って見よう。(その5)~【実践編】Box-管理者-グループ管理-EXCELで管理-便利ツール
    BoxのAPIを使って見よう。(その5)~【実践編】Box-管理者-グループ管理-EXCELで管理-便利ツール
     

    BoxのAPIを使って見よう。(その5)~【実践編】Box-管理者-グループ管理-EXCELで管理-便利ツール

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

    0.グループ情報のコントールには

    グルーブ管理の権限が必要です。

    EXCEL(VBA)から呼び出す方法は、過去記事を参照して下さい。

    BoxのAPIを使って見よう。(その1)~概要と基礎情報
    BoxのAPIを使って見よう。(その2)~実際にAPIでデータ取得
    BoxのAPIを使って見よう。(その3)~VBAから呼び出す
    BoxのAPIを使って見よう。(その4)~グループの関連情報を取得

    1.その前に。

    作成したVBAを動作させるとき「開発」画面を表示してイミディエイトに、リクエスト情報やレスポンス情報を表示させるのが面倒ですよね。
    そのため、今回はひと手間として、テキストファイルでトレースログを取得してみます。

    参考にさせて頂いたサイトは、こちらです。

    エクスプローラーで表示した様子です。EXCELと同じ場所に出力します。
    エクスプローラーで表示したとき

    以下の要件を追加

    ・ファイルが無ければ、自動生成
     ⇒ 消してから確認しいって事ありますね?
    ・ファイルがロックされている場合は、エラーにしない。
     ⇒ エディタによっては開いた時にロックされてしまう場合があるので、その対策

    ログ出力(プログラムサンプル)

    Sub WLog(message As String)
    
        On Error GoTo ErrorHandler
    
        Dim LogPath As String
        LogPath = ThisWorkbook.Path & "\box_sample.log"
    
        Dim objFso As Object
        Set objFso = CreateObject("Scripting.FileSystemObject")
    
        If Dir(LogPath) = "" Then
            objFso.CreateTextFile (LogPath)
        End If
    
        With objFso.OpenTextFile(LogPath, ForAppending)
    
            .WriteLine Now & vbTab & message
            .Close
    
        End With
    
        Set objFso = Nothing
    
    ErrorHandler:
    End Sub
    
    

    BOXのレスポンスJSONをログに出力するときの、ひと手間

    いままでの記事でも紹介にさせて頂いて居る VBA-JSONを使用してログを整形して出力してみます。

    Private Sub ResponseJSONLog(ByVal resJson As Variant)
        TraceLog.WLog "response JSON" + vbNewLine + JsonConverter.ConvertToJson(resJson, Whitespace:=4)
    End Sub
    

    上記の様な関数を用意しておいて、ログに出力してみます。
    以下はメモ帳で表示して見たときです。

    トレースログでJSONを整形して表示

    2. 【本題】BOXでグループを操作

    今回は以下のようなインターフェース画面を作成し簡単に管理できるような仕組みを構築してみます。

    ・グループ情報を取得して一覧表示
    ・新規にグループを追加
    ・既存グループに対して変更・削除

    ■初期画面
    初期画面

    ■グループ一覧を取得してみよう。
    グループ一覧を取得する場合

    ■グループ一覧を取得し実際に変更を加えてみよう。
    各グループの追加・更新・削除を実施する場合

    今回使用するBOX APIは

    ・Create Group
    ・Update Group
    ・Delete Group
    ・Get Enterprise Groups

    Create Group

    グループを新規に登録するAPI。※グループを管理する権限が必要です。

    ■接続方法(基本)

    curl https://api.box.com/2.0/groups \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -d '{"name": "section-mmaster", "description": "section 2 group", "member_viewability_level": "admins_only"}' \
    -X POST
    

    ■パラメタ内容

    create params

    ■レスポンス

    グループ情報が復帰します。

    ※fields に、必要なパラメタを指定しないと含まれません。
    ※同じグループ名が既に存在すると、、HTTP status codes が 409 conflict となります。

    Update Group

    グループを更新するAPI。※グループを管理する権限が必要です。

    ■接続方法(基本)

    curl https://api.box.com/2.0/groups/GROUP_ID \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -d '{"name": "section-master"}' \
    -X PUT
    

    ■パラメタ内容

    update params

    ■レスポンス

    グループ情報が復帰します。

    ※fields に、必要なパラメタを指定しないと含まれません。
    ※同じグループ名が既に存在すると、、HTTP status codes が 409 conflict となります。

    Delete Group

    グループを削除するAPI。※グループを管理する権限が必要です。

    ■接続方法(基本)

    curl https://api.box.com/2.0/groups/GROUP_ID \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -X DELETE
    

    ■パラメタ内容

    delete params

    ■レスポンス
    正常にDELETEされた場合には、HTTP status codes が 204 no_content となります。

    Get Enterprise Groups

    企業のすべてのグループを取得するAPI。※グループを管理する権限が必要です。

    前回の記事 を参考にしてください。

    3.サンプル

    サンプルを作ってみましたので、試したい方はご自由にどうぞ。
    サンプルEXCELをダウンロード
    ※VBAのコードは、現時点では非公開です。
    ※操作可能なグループ数は25に制限されています。

    サンプルデータのダウンロード画面

    4.まとめ

    次回は
    グループにユーザとフォルダを追加・更新・削除する機能を作ってみたいと思います。

    ※アピリッツではBoxの販売パートナーもしてるようです。

    代理店販売してますよ。

    お問い合わせは、こちら へ

    記事を共有