こんにちは。CS課の斎藤です。
サーバーワークスでは業務の見える化としてQuestetra BPM Suiteを利用しています。
以前にもBacklogやTrello、Slack連携を紹介させていただきました。
Backlogに起票するのを自動化できたところで「いや〜、自動化って本当にいいものですね」と言ってフローを終わらせたいところですが、「Boxにアップロードしてください」というタスクが振られてしまいました。
せっかくだからファイルのアップロードも自動化したいですよね。
そこでBox APIを利用してアップロードを自動化します。
参考:Box Content API リファレンス
やりたいこと
Questetra上で作成したPDFをBoxにアップロードする。
QuestetraでPDFファイルを作成するための設定手順は以下を参照してください。
https://www.questetra.com/ja/tour/workflow-designer/pdf-generation/
設定手順
1. BOX側での準備
1-1 アプリケーションの設定
OAuth2.0を利用するので開発用アプリケーションの設定をする必要があります。
https://developer.box.com/ja_JP/home からbox Developersにログインします。
「Boxアプリケーションの作成」から任意のアプリケーション名で作成します。
今回は「Questetra-to-Box」をアプリケーション名にします。
設定は画像の緑枠の部分だけでOKです。赤枠で囲んだclient_id と client_secretはQuestetra側の設定の際に使用します。
設定項目 | 設定値 |
---|---|
Content APIアクセスのみ | チェックする |
redirect_uri | https://s.questetra.net/oauth2callback |
1-2 アップロードするフォルダのフォルダIDを調べておく
API実行時のパラメータでアップロードする先のフォルダIDを入力する必要があります。
できれば任意のフォルダにアップロードできるようにしたいところですが、今回は2つのフォルダから選択してアップロードできるようにQuestetra側にフォルダIDを登録します。
フォルダIDはURLに含まれているのでそこで確認することにします。
https://hoge.app.box.com/folder/xxxxxxxxxx のxxxxxxxxxxの部分がファルダIDです。
(BoxのUIによってhttps://hoge.app.box.com/files/0/f/xxxxxxxxxx の場合があります)
2. Questetra側の設定
2-1. フローの作成
PDF作成のタスクを用意します。
メッセージ送信中間イベント(HTTP)やエラー時の確認用タスク等を用意します。
2-2. アップロード先のフォルダIDの設定
開始時のタスクでアップロード先のフォルダを選択できるようにプロセスデータ項目の設定をします。
設定項目 | 設定値 |
---|---|
データタイプ | チェックする |
選択肢ID | BoxのフォルダID |
表示ラベル | 画面に表示される選択肢の文言 |
表示上はこのようになります。
2-3. メッセージ送信中間イベント(HTTP)の設定
ここでAPIを呼び出すときの設定をします。
- 通信設定
設定項目 設定値 アクセスURL https://upload.box.com/api/2.0/files/content HTTP Method multipart/form-data 送信パラメータ
設定項目 設定値 filename アップロードするファイルを入れたプロセスデータ項目 parent_id BoxのフォルダID(選択されたIDを入れる)
2-4. OAuth2.0で認証する
メッセージ送信中間イベント(HTTP)の設定にある「セキュリティ/カスタムヘッダ」から設定します。
- セキュリティ/カスタムヘッダ
設定項目 設定値 OAuth2.0で接続する 選択する 設定名 「OAuth 2.0 設定」でつける名前
- OAuth 2.0 設定
設定項目 | 設定値 |
---|---|
名前 | 「セキュリティ/カスタムヘッダ」で設定する設定名 |
認可エンドポイントURL | https://app.box.com/api/oauth2/authorize |
トークンエンドポイントURL | https://app.box.com/api/oauth2/token |
スコープ | 空欄のままでOK |
クライアントID | 1-1で発行されたclient_id |
クライアントシークレット | 1-1で発行されたclient_secret |
ここまで設定できたらトークンを取得します。
- 「トークンの取得」> Boxの画面に遷移するので「Boxへのアクセスを許可」
正常に取得できれば、「トークンの有無」の欄に「○」が表示されます。
3. 実行してみる
以上で設定は終わりです。フローを実行するとファイルが作成されてBoxにアップロードされます。
もうちょっと機能追加
アップロード前にBox側にフォルダを作成してアップロードするようにしてみます。
フローはこんな感じです。
フォルダ作成のAPIを叩く処理をいれ、APIのレスポンスから作成したフォルダIDを取得します。
その後は、同じようにそのフォルダに対してアップロードするだけです。
フォルダIDはスクリプトタスクを使って以下のように抜き出します。簡単ですね。
var response = data.get('APIレスポンスを格納したプロセスデータ項目の番号');
var res = JSON. parse (response);
retVal.put("フォルダIDを格納するプロセスデータ項目の番号", res['id']);
まとめ
これでQuestetraとBoxの連携ができてきました。
実際にはアップロードしたファイルや作成したフォルダの共有リンクを作成してQuestetraで表示するようにしておくと便利です。
APIさえあればたいていのSaaSと連携できそうなのでいろいろと試していこうと思います。