Box CLIとCSVファイルを用いて、各フォルダにメールアドレスを割り当てる(ノンプログラマでも出来た~!やった~!)
前置き
↓ここでうんうん悩んでいたことの解決策のひとつとして、Box CLIでどうにかします。
先のnoteでは<やりたいこと>を次のように示していた。
<やりたいこと>
1.Boxで大量のフォルダを作り、
2.各フォルダにそれぞれ異なるメールアドレスを割り当てる
で、なんでこれをやりたいかとゆーと。
学会発表で各発表者用のフォルダを作って、そのフォルダに各発表者は資料をアップロードして欲しい、という背景課題があった。フォルダは200個くらい必要となる想定。これをなんとか仕組み化できないかと悩んでいる。
この課題に対しては、メールアドレスの割り当てではなく、各フォルダ作成後にファイルリクエストを発行して各発表者へメールで送付のほうがいいのではないか、と考えているところ。しかし、ファイルリクエストだとアップロードだけでその後の削除や差し替えを本人が出来ないしな、うーん。
まずは Box CLI で 「1.Boxで大量のフォルダを作り、2.各フォルダにそれぞれ異なるメールアドレスを割り当てる」 が実現できたので、そのやり方を忘れないうちにメモしておく。
なお、私の作業環境はWindowsです。
Box CLI とは
連番で作るとか、大量に作るとか、そういった作業はGUIよりCLIのほうが得意なので、BoxさんはCLIを用意してくださっている、のかな。
まずは下記の公式やQiitaを読んで、
1.Boxアプリケーションを作成、構成、承認する
2.CLIをインストールして構成する
3.CLIを使用してコマンドを実行する
このへんまで頑張ってください。
最初は何もかも分からない、何言ってるのか分からない、もうだめだ、と泣いていましたが、ノンプログラマでもなんとか出来たよ、よかった、本当に良かった...。Qiitaで示されてる画像と実際の画像違うじゃんと戸惑ったり、何がしたくて何をしてんのこれと思ったり、もうしんどかったです。
Box CLIを使い始めるまでの、詰まったところとか、やり方とか残しておいたほうがいいのかなあ。こんなところで詰まってるのは自分だけなんじゃ...と悲嘆に暮れている。
↓こんなことで詰まっていたりしていた。
↓公式 日本語
↓公式 英語
↓Qiita
コード
たぶん詳しい人はコード見ればやりたいこと、できることが分かるんでは...。
コードを用いて、どういった手順で作業するかは「手順」の項目で説明します。
コード1
box folders:create --bulk-file-path=/Users/ExampleUser/Desktop/filename.csv --as-user=YourID -s --csv
<自分メモ>
box folders:create のコマンドに対して -でいろいろオプションを付けている、という構造なのかな。
box folders:create
https://github.com/box/boxcli/blob/main/docs/folders.md#box-folderscreate-parentid-name
--bulk-file-path= でcsvを読み込んで、それを元にフォルダを作成します。csvの構造は次の項目を参照。
--as-user=YourID で、作成されたフォルダに自分のIDを付けておきます。これしないと作成されたフォルダ見れないので。
as-user について
https://ja.developer.box.com/guides/authentication/jwt/as-user/
-s と --csv は
OPTIONS ですね。
https://github.com/box/boxcli#usage
-s, --save Save report to default reports folder on disk
レポートをディスク上のデフォルトのレポートフォルダに保存します
--csv Output formatted CSV
フォーマットされたCSVを出力します
コード2
box collaborations:add --bulk-file-path=/Users/ExampleUser/Desktop/login.csv --as-user=YourID
<自分メモ>
collaborations:add で 整えたCSVの情報を元にコラボレータを追加する。
collaborations:add
https://github.com/box/boxcli/blob/main/docs/collaborations.md#box-collaborations
github
コードについてはgithubが見やすいよ、と教えていただました。
CSV
こんな感じで、作りたいフォルダネームのCSV用意しておいてください。
手順
晴れてBox CLIが使えるようになったら、さー、あとはコードとCSVでペチペチ作業しますよ!
手順1 コード1を打ち込み、CSVを読み込ませてフォルダを作成する
コマンドプロンプトを開き、コード1を打ち込む。
box folders:create --bulk-file-path=/Users/ExampleUser/Desktop/filename.csv --as-user=YourID -s --csv
成功すると、下記のような文字が緑色で表示される。
Output written to C:\Users\ExampleUser\Documents\Box-Reports\folders-create-2021-11-12_19_16_17_000.csv
All bulk input entries processed successfully.
手順2 作成されたフォルダ情報のCSVをいじる
先のコードで生成されたCSVを開く。
こんな感じのCSVになってるはず。
idのところが指数表示になってるとアカンので直しておいてね。
で、このCSVになんやら色々情報がありますが、
type、id、name だけ残して余計なものは消します。
typeはitemtypeに書き換え、
idはitemidに書き換え、
loginとroleの列を追加。
下図参照。
手順3 コード2で、修正CSVを読み込んでメールアドレスを割り当てる
box collaborations:add --bulk-file-path=/Users/ExampleUser/Desktop/login.csv --as-user=YourID
コードが通って、上手くいくと、下図のように表示される。
All bulk input entries processed successfully.
ここ、ここが嬉しいポイント!
この緑色の文字が表示される瞬間はたまらなく嬉しいですね!
この文字列をTシャツにしたいぐらい嬉しい!!
なんかしくじってると、下図ような赤色でダメ出しを喰らいます。
新たな課題「ファイルリクエスト」
「各フォルダにメールアドレスを割り当てる」という意味では、今回の手法で出来ることがわかった。しかし「ファイルリクエスト」を使うほうがいいのでは、という思いが出てきた。
各フォルダ作成後にファイルリクエストを発行して各発表者へメールで送付、というのが良いケースもあるかもしれない。
box folders:share ID とかでいけるのか?
https://github.com/box/boxcli/blob/main/docs/folders.md#box-foldersshare-id
疲れたので続きはまたこんど。
謝辞
丁寧にご教示いただいたBox Japan Cloud Connectionsのみなさま、daharasさん、Iさんに深く感謝申し上げます。