見出し画像

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

画像1

こんな感じで、作りたいフォルダネームの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のところが指数表示になってるとアカンので直しておいてね。

画像3

で、このCSVになんやら色々情報がありますが、
type、id、name だけ残して余計なものは消します。

typeはitemtypeに書き換え、
idはitemidに書き換え、
loginとroleの列を追加。
下図参照。

画像4


手順3 コード2で、修正CSVを読み込んでメールアドレスを割り当てる

box collaborations:add --bulk-file-path=/Users/ExampleUser/Desktop/login.csv --as-user=YourID

コードが通って、上手くいくと、下図のように表示される。

画像2

All bulk input entries processed successfully. 
ここ、ここが嬉しいポイント!
この緑色の文字が表示される瞬間はたまらなく嬉しいですね!
この文字列をTシャツにしたいぐらい嬉しい!!

なんかしくじってると、下図ような赤色でダメ出しを喰らいます。

画像5


新たな課題「ファイルリクエスト」

「各フォルダにメールアドレスを割り当てる」という意味では、今回の手法で出来ることがわかった。しかし「ファイルリクエスト」を使うほうがいいのでは、という思いが出てきた。

https://support.box.com/hc/ja/articles/360045304813-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B

各フォルダ作成後にファイルリクエストを発行して各発表者へメールで送付、というのが良いケースもあるかもしれない。

box folders:share ID とかでいけるのか?
https://github.com/box/boxcli/blob/main/docs/folders.md#box-foldersshare-id

疲れたので続きはまたこんど。

謝辞

丁寧にご教示いただいたBox Japan Cloud Connectionsのみなさま、daharasさん、Iさんに深く感謝申し上げます。


いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!