はじめに
こちらの記事の続きです。
Boxコネクタの「ファイルが変更されたとき(プロパティのみ)(V1/V2)」トリガーはファイルが変更されたときも含め、少なくとも下記のイベントに反応することが検証で分かりました。
- ファイル新規作成
- ファイル新規アップロード
- ファイルの変更
- ファイル更新アップロード
- ファイル名の変更
- メタデータの追加(1つ目のみ)
- タグの追加
この動作は新規ファイルと変更ファイルで異なる処理を行いたい場合に厄介な仕様です。
今回はこれに対する対処になりそうな一つのアイデアです。
対処案-ファイルの履歴の有無で新規ファイルか判別する
対処案はシンプルです。ファイルの履歴がない場合は新規ファイルという判断を加えるだけです。
Box APIにはそれができる命令が備わっています。
HTTPアクションやカスタムコネクタでこのAPIを使ってもよいのですが、「ファイルが変更されたとき(プロパティのみ)(V1/V2)」トリガーの出力や「ID によるファイル メタデータの取得」アクションの出力にある「ETag」がそれにあたるようです。
新規ファイルのEtagは"0"で、ファイルが更新されるたびに数字が増えていきます。
※BoxコネクタのリファレンスにもBox APIのリファレンスにもそのようなことは記載されていません。あくまで個人的に検証したのみの結論です。
フロー全体図
フロー解説
- Etagが0だったら
- 新規ファイルまたは新規アップロード
- それ以外だったら
- 下記のいずれか
- ファイルの変更
- ファイル更新アップロード
- ファイル名の変更
- メタデータの追加(1つ目のみ)
- タグの追加
- 下記のいずれか
という分岐ができます。
制限事項・課題事項
- タグ・メタデータの追加やファイル名の変更は今のところ判別する手段が思いついていません。
- Officeオンラインとの連携が設定されている環境の場合、Officeドキュメントを新規作成と同時に何度かファイルが更新されます。このため新規作成と判別することは困難でした。
さいごに
カスタムコネクタを作成して一通り動作確認した後でETagの存在に気づきました...
結果的にBox APIが気軽に使えるようになったので回り道もよいものです。