Box CLI を使えるようにしてみる
まとめ記事ができました
このスクラップについて
Box についていくつかのスクラップを作成したがいずれも Web GUI を使っていた。
今さらだがスクラップを書くためには Box CLI が便利そうなので使ってみようと思う。
関連スクラップ
読んでいくドキュメント
カスタムアプリ作成
ドキュメントにある「アプリの作成」ボタンを押すと自動的に作成してくれる。
作成するとクライアント ID とクライアントシークレットが表示されるので控えておく。
CLI インストール
npm install --global @box/cli
Windows / macOS 用インストーラもある。
CLI ログイン
box login -n susukida
クライアント ID とクライアントシークレットの入力が求められるので入力する。
入力すると Web ページが表示されるのでログインする。
ログインしたのに
何か失敗してしまった。
もう 1 回やってみよう。
今度はうまくいった
「Box へのアクセスを許可」ボタンを押す。
素敵な完了ページが表示された
動作確認
box users:get me
Type: user
ID: '12345678901'
Name: 薄田 達哉
Login: joe@example.com
Created At: '2023-04-20T22:43:18-07:00'
Modified At: '2023-04-30T21:20:10-07:00'
Language: ja
Timezone: Asia/Tokyo
Space Amount: 999999999999999
Space Used: 491
Max Upload Size: 5368709120
Status: active
Job Title: ''
Phone: 1234-56-7890
Address: ''
Avatar URL: 'https://app.box.com/api/avatar/large/12345678901'
Notification Email: []
GitHub リポジトリ
資格情報のクリア
クライアント ID とクライアントシークレットがブラウザのローカルストレージなどに保持されているようなので「資格情報をクリア」ボタンを押す。
こうすることでドキュメントページらか資格情報の表示が消える。
ヘルプ
box --help
Official command line interface for the Box API
VERSION
@box/cli/3.8.0 darwin-x64 node-v16.17.0
USAGE
$ box [COMMAND]
COMMANDS
autocomplete Display autocomplete installation instructions
collaboration-allowlist List collaboration allowlist entries
collaborations Manage collaborations
collections List your collections
comments Manage comments on files
configure Configure the Box CLI
device-pins List all the device pins for your enterprise
events Get events
file-requests Copies existing file request to new folder
files Manage files
folders Manage folders
groups List all groups
help Display help for the Box CLI
legal-hold-policies List legal hold policies
login Sign in with OAuth and set a new environment or
update an existing if reauthorize flag is used
metadata-cascade-policies List the metadata cascade policies on a folder
metadata-query Create a search using SQL-like syntax to return
items that match specific metadata
metadata-templates Get all metadata templates in your Enterprise
oss Print a list of open-source licensed packages used
in the Box CLI
recent-items List information about files accessed in the past
90 days up to a 1000 items
request Manually specify a Box API request
retention-policies List all retention policies for your enterprise
search Search for files and folders in your Enterprise
shared-links Manage shared links
sign-requests List sign requests
storage-policies List storage policies
tasks Manage tasks
terms-of-service List terms of services for your enterprise
tokens Get a token. Returns the service account token by
default
trash List all items in trash
users List all Box users
watermarking Apply a watermark on an item
web-links Manage web links
webhooks List all webhooks
フォルダーヘルプ
box folders --help
Manage folders
USAGE
$ box folders:COMMAND
COMMANDS
folders:collaborations List all collaborations on a folder
folders:copy Copy a folder to a different folder
folders:create Create a new folder
folders:delete Delete a folder
folders:download Download a folder
folders:get Get information about a folder
folders:items List items in a folder
folders:locks List all locks on a folder
folders:metadata Get all metadata on a folder
folders:move Move a folder to a different folder
folders:rename Rename a folder
folders:share Create a shared link for a folder
folders:unshare Delete a shared link for a folder
folders:update Update a folder
folders:upload Upload a folder
フォルダー作成ヘルプ
box folders:create --help
Create a new folder
USAGE
$ box folders:create PARENTID NAME
ARGUMENTS
PARENTID ID of parent folder to add new folder to, use '0' for the root
folder
NAME Name of new folder
OPTIONS
-h, --help Show CLI help
-q, --quiet Suppress any non-error output to stderr
-s, --save Save report to default reports folder
on disk
-t, --token=token Provide a token to perform this call
-v, --verbose Show verbose output, which can be
helpful for debugging
-y, --yes Automatically respond yes to all
confirmation prompts
--as-user=as-user Provide an ID for a user
--bulk-file-path=bulk-file-path File path to bulk .csv or .json objects
--csv Output formatted CSV
--description=description A description for folder <DESCRIPTION>
--fields=fields Comma separated list of fields to show
--id-only Return only an ID to output from this
command
--json Output formatted JSON
--no-color Turn off colors for logging
--save-to-file-path=save-to-file-path Override default file path to save
report
EXAMPLE
box folders:create 22222 "New Subfolder"
フォルダー作成
box folders:create 0 "My CLI Folder"
コンソール出力は長いので割愛するが ID が表示されるので控えておく。
フォルダー作成確認
box folders:items
----- Folder 123456789012 -----
Type: folder
ID: '123456789012'
Sequence ID: '0'
ETag: '0'
Name: My CLI Folder
Box CLI の使い道
メインの使い方は操作方法の説明や操作結果の記載になりそう。
トライ&エラーをしている段階で SDK を使ってプログラムを書かずに色々と試せるのも便利そう。
ユーザー認証だけではなくサーバー認証もできるようだ。
せっかくなので
サーバー認証(クライアント資格情報許可)を試したい。
今日はここから
サーバー認証(クライアント資格情報許可)を試してみる。
構成 JSON ファイル
touch ~/Desktop/config.json
{
"boxAppSettings": {
"clientID": "xxxx",
"clientSecret": "yyyy"
},
"enterpriseID": "1234567890"
}
clientID / clientSecret は構成タブ、enterpriseID は一般設定タブから確認できる。
いずれも開発者コンソールのカスタムアプリページ。
環境の追加
box configure:environments:add ~/Desktop/config.json --ccg-auth
下記のメッセージが表示された。
Successfully added CLI environment "default"
環境の選択
box configure:environments:set-current
下記のメッセージが表示された。
? Which environment? (Use arrow keys)
❯ susukida
default
default を選択する。
The default environment has been set as the default
ユーザー確認
box users:get me
Type: user
ID: '12345678901'
Name: SA2User
Login: AutomationUser_1234567_xxxxxxxxxx@boxdevedition.com
Created At: '2023-04-28T18:45:23-07:00'
Modified At: '2023-04-30T17:11:25-07:00'
Language: en
Timezone: America/Los_Angeles
Space Amount: 10737418240
Space Used: 9
Max Upload Size: 5368709120
Status: active
Job Title: ''
Phone: ''
Address: ''
Avatar URL: 'https://app.box.com/api/avatar/large/12345678901'
Notification Email: []
Name がカスタムアプリの名前になっていることを確認する。
まとめ
- Box CLI を使うにはユーザー認証(OAuth 2.0)のカスタムアプリ作成が必要となる。
- カスタムアプリはドキュメントページから簡単に作れる。
- CLI は npm を使ってインストールする。
- コマンド実行前に CLI でログインと承認が必要となる。
- CLI でログイン中のユーザーを確認するには
box users:get me
を実行する。 - フォルダー作成には
box folders:create 0 "FOLDER NAME"
を実行する。 - ルートフォルダーを一覧するには
box folders:items 0
を実行する。 - Box CLI ではサーバー認証もできる。
- サーバー認証(クライアント資格情報許可)をするには構成 JSON ファイルを作成する。
-
box configure:environments:add ~/Desktop/config.json --ccg-auth
コマンドで環境を追加する。 -
box configure:environments:set-current
コマンドで環境を選択する。
おわりに
これまで GUI を使って画像を中心に手順や結果を記録してきたが、CLI を使うとコマンドやコンソール出力という形で記録しやすいのでスクラップや記事を書いたりするのに向いている。
一方で GUI でやった方が便利な場合やわかりやすい場合もあると思うので、上手に使い分けていければ嬉しい。
次のスクラップ