Closed28

Box CLI を使えるようにしてみる

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

このスクラップについて

Box についていくつかのスクラップを作成したがいずれも Web GUI を使っていた。

今さらだがスクラップを書くためには Box CLI が便利そうなので使ってみようと思う。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

カスタムアプリ作成

ドキュメントにある「アプリの作成」ボタンを押すと自動的に作成してくれる。

作成するとクライアント ID とクライアントシークレットが表示されるので控えておく。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

CLI ログイン

コマンド
box login -n susukida

クライアント ID とクライアントシークレットの入力が求められるので入力する。

入力すると Web ページが表示されるのでログインする。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

動作確認

コマンド
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: []
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

資格情報のクリア

クライアント ID とクライアントシークレットがブラウザのローカルストレージなどに保持されているようなので「資格情報をクリア」ボタンを押す。

こうすることでドキュメントページらか資格情報の表示が消える。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ヘルプ

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
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

フォルダーヘルプ

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
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

フォルダー作成ヘルプ

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"
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

フォルダー作成

box folders:create 0 "My CLI Folder"

コンソール出力は長いので割愛するが ID が表示されるので控えておく。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

フォルダー作成確認

box folders:items

コンソール出力(例)
----- Folder 123456789012 -----
Type: folder
ID: '123456789012'
Sequence ID: '0'
ETag: '0'
Name: My CLI Folder
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

Box CLI の使い道

メインの使い方は操作方法の説明や操作結果の記載になりそう。

トライ&エラーをしている段階で SDK を使ってプログラムを書かずに色々と試せるのも便利そう。

ユーザー認証だけではなくサーバー認証もできるようだ。

https://github.com/box/boxcli/blob/main/docs/configure.md#box-configureenvironmentsadd-path

https://github.com/box/boxcli/blob/main/docs/authentication.md#server-auth-with-ccg

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

構成 JSON ファイル

コマンド
touch ~/Desktop/config.json
~/Desktop/config.json
{
  "boxAppSettings": {
    "clientID": "xxxx",
    "clientSecret": "yyyy"
  },
  "enterpriseID": "1234567890"
}

clientID / clientSecret は構成タブ、enterpriseID は一般設定タブから確認できる。

いずれも開発者コンソールのカスタムアプリページ。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

環境の追加

コマンド
box configure:environments:add ~/Desktop/config.json --ccg-auth

下記のメッセージが表示された。

Successfully added CLI environment "default"

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

環境の選択

コマンド
box configure:environments:set-current

下記のメッセージが表示された。

? Which environment? (Use arrow keys)
❯ susukida
default

default を選択する。

The default environment has been set as the default

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ユーザー確認

コマンド
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 がカスタムアプリの名前になっていることを確認する。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

まとめ

  • 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 コマンドで環境を選択する。
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

おわりに

これまで GUI を使って画像を中心に手順や結果を記録してきたが、CLI を使うとコマンドやコンソール出力という形で記録しやすいのでスクラップや記事を書いたりするのに向いている。

一方で GUI でやった方が便利な場合やわかりやすい場合もあると思うので、上手に使い分けていければ嬉しい。

このスクラップは2023/05/02にクローズされました