はじめに
boxには複数のAPIが用意されていますが、今回は「https://upload.box.com/api/2.0/files/content」 を利用したファイルのアップロードについて書いていきたいと思います。なお、APIの使用には認証設定が完了していることが前提となりますので、完了されていない場合は「boxとつないでみる【その2】」を参照してみてください。
- boxとつないでみる【その1】※まずは試してみる。
- boxとつないでみる【その2】※OAuth2.0で接続するための設定を行います。
- boxとつないでみる【その3】※ファイルをアップロードします。
事前準備と確認
- 作業用ディレクトリを作成します。
- {dataspider.home}/server/data/box/upload ←アップロード対象です。
- {dataspider.home}/server/data/box/work ←処理作成に利用します。
- box のAPIリファレンスを確認します。
- https://developer.box.com/v2.0/reference
- Upload file:https://upload.box.com/api/2.0/files/content ←今回はこちら。
- 作業で利用するファイルworkディレクトリに保存します。
- アップロード用のサンプルファイル「box_sample.docx」を下記URLよりダウンロードします。
- レスポンススキーマ設定用ファイルを作成しますので、APIリファレンスの「201 Created」以下のデータを「responce.json」という名称、「UTF-8」で保存します。
- グローバルリソースを作成します。
- APIリファレンスを確認すると前回利用したエンドポイントとは異なっているので、新たにグローバルリソースを作成する必要があります。
- 「Studio」→「コントロールパネル」→「グローバルリソースの設定」→「新しいグローバルリソースの設定」に進み、「ネットワーク」タブから「REST」を選択したら、接続先URLに「https://upload.box.com/」を指定します。
- スクリプト変数を作成します。
- アップロードが終わったら「file_id」を取得しますので、スクリプト変数を用意しておきます。
処理の作成
完成イメージ
実行時は以下の順番で実行されますが、作成時は1→3→2→4という順番で設定していきます。
- 対象となるフォルダからファイル名を取得します。
- パラメータ設定を行
- boxへのアップロード設定をします。
- アップロード結果(file_id)を取得します。
ファイル名の取得
「ツールパレット」→「ファイル」→「ファイル操作」から「ファイル名一覧取得」をキャンバスにドラッグ&ドロップします。
ディレクトリパスには事前準備しておいたディレクトリパスを設定します。
boxへのアップロード設定
「ツールパレット」→「ネットワーク」→「REST」から「GET実行」をキャンバスにドラッグ&ドロップします。
接続先には先程作成したグローバルリソースを選択し、パスには「/api/2.0/files/content」を設定します。
リクエストタブを開いて、データ形式に「マルチパートフォーム」を選択し、APIリファレンスに記載されている必須パラメータ「name」と「parent.id」、「file」を作成します。fileにはアップロードするファイルを指定することになります。
レスポンス設定タブを開いて、データ形式に「JSON」を選択し「JSONファイルを指定して出力スキーマを設定」から、事前準備で作成していたresponce.jsonを選択します。
認証設定タブを開いて、認証を「グローバルリソース」にし、前回設定した「OAuth2.0」の設定を選択します。
パラメータ設定を行います。
「ツールパレット」→「変換」→「基本」から「マッピング」をキャンバスにドラッグ&ドロップしたら、1から2へ、2から3へフローを引いていきます。
「mapping」をダブルクリックすると以下のようなマッピング画面が表示されます。画面左側が入力元「ファイル名取得」、右側が出力先「POST実行」になっていますので、順番に設定していきます。
ファイル名:アップロードするファイル名称を設定します。
ファイルパス:アップロードするファイルが格納されているファイルパスを設定します。入力元の「name」から取得されるのはファイル名なので、足りない部分を「ツールパレット」→「文字列」→「基本」から「単一行文字列定数」を選択し、キャンバスにドラッグ&ドロップしたら保存されているパス「/data/box/upload/」を設定します。次にファイル名と連結していきますので「演算」から「連結」を選択し、キャンバスにドラッグ&ドロップしたら、二本のハンドラがあるので上段に「単一行文字列定数」、下段に「name」をつなぎます。最後に「連結」から出力先の「path」に線を引きます。
box上のフォルダID:今回はroot上にアップロードするので「0」を指定します。「ツールパレット」→「文字列」→「基本」から「単一行文字列定数」を選択し、キャンバスにドラッグ&ドロップして「0」を設定したら同じように線を引いていきます。
アップロード結果を取得します。
「ツールパレット」→「変換」→「基本」から「マッピング」をキャンバスにドラッグ&ドロップしたら、3から4へ、4からendへフローを引いていきます。マッピング画面を開いたら入力元の「id」を出力先のスクリプト変数「file_id」に線を引いて処理は完了です。これでファイルがアップロードされると、box上で管理対象となる「file_id」を取得することができると思います。
最後に
RESTアダプタへのパラメータ設定は少し複雑に感じてしまうところがあるかもしれませんが、APIリファレンスとRESTアダプタの各設定項目とを見比べながら読み解いてみてください!