見出し画像

BOX APIでフォルダ一覧の情報とフォルダのコラボレータを取得する(管理者向け)

この記事について

BOXでユーザーが利用してるフォルダの情報を取得したい時に調べたものです。

- BOXのフォルダ一覧を取得→BOXのフォルダIDを取得
- BOXのフォルダIDからコラボレータを取得
- BOXの共有フォルダから不要なコラボレータを削除
などを実施します。

管理者トークンを取得する

BOX管理者ページから管理者トークンを取得します。


特定のフォルダ配下のフォルダの情報を表示する

curl→jqで整形します。
ここでは、フォルダIDとフォルダ名のみを表示します。
ルートフォルダから確認する場合は、フォルダIDを0にして下さい。
デフォルトで100件まで表示になっています。

curl -i -X GET "https://api.box.com/2.0/folders/フォルダID/items" -H "Authorization: Bearer 管理者トークン" | jq -R 'fromjson?' | jq -r '.entries[]|[.id,.name]| @csv'

フォルダのコラボレータ(共有ユーザ)情報を表示

フォルダのIDを取得し、フォルダのコラボレータ情報を取得します。

そのままjqで整形しようとすると、JSON形式の文字列が入っておりエラーが出るため、
jr -R fromjson?を追加します。

> -R : inputを文字列そのままでjqフィルタに渡す
> fromjson : JSON化、?を追加してエラー抑制

curl -i -X GET "https://api.box.com/2.0/folders/フォルダID/collaborations" -H "Authorization: Bearer トークン" | jq -R 'fromjson?'

フォルダのコラボレータ(共有ユーザ)の氏名とメールアドレスを抽出する

この値から、entriesのオブジェクトの入れ子となっている、
accessible_byのオブジェクトから、nameとloginのみ抽出する。
最後にsed 's/"//g'で、「"」を取り除きます(この辺はお好みで適当に)

curl -i -X GET "https://api.box.com/2.0/folders/フォルダI/collaborations" -H "Authorization: Bearer トークン" | jq -R 'fromjson?' | jq -r '.entries[]|[.accessible_by[]] | @csv' | sed 's/"//g'

上記を実行すると、
accessibleのオブジェクトの値が出力されるので、
accessibleからコラボレータの氏名と名前のみ取得する。 

 curl -i -X GET "https://api.box.com/2.0/folders/フォルダID/collaborations" -H "Authorization: Bearer トークン" | jq -R 'fromjson?' | jq -r '.entries[]|[.accessible_by["name"],.accessible_by["login"]] | @csv' | sed 's/"//g'

コラボレーションIDのみを取得したい場合は適当に抽出。

curl -i -X GET "https://api.box.com/2.0/folders/フォルダID/collaborations" -H "Authorization: Bearer トークン" | jq -R 'fromjson?' | jq -r '.entries[]|[.id] | @csv' | sed 's/"//g

フォルダのコラボレーションを削除する

対象フォルダから取得したコラボレーションIDを利用して、コラボレーションを削除します。
1つのコラボレーション = 1つのフォルダに追加された1ユーザ
となります。

curl -i -X DELETE "https://api.box.com/2.0/collaborations/コラボレーションID" -H "Authorization: Bearer トークン"

参考

BOXのデベロッパーコンソール
https://app.box.com/developers/console

フォルダコラボレーションのリストを取得 - APIリファレンス - Box開発者向けドキュメントポータル https://ja.developer.box.com/reference/get-folders-id-collaborations/

フォルダ情報の取得 - APIリファレンス - Box開発者向けドキュメントポータル
https://ja.developer.box.com/reference/get-folders-id/

Box APIをcurlで叩く -Qiita
https://qiita.com/YKInoMT/items/c1a130a783c27e6ae771

SDKを使用しないOAuth 2.0 - Box開発者向けドキュメントポータル https://ja.developer.box.com/guides/authentication/oauth2/without-sdk/

jq Tutorial
https://stedolan.github.io/jq/tutorial/


この記事が気に入ったらサポートをしてみませんか?