Web APIで繋がる Questetra / Box 連携

記事タイトルとURLをコピーする

こんにちは。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

Box側の設定

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

OAuth2の設定

ここまで設定できたらトークンを取得します。
- 「トークンの取得」> 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と連携できそうなのでいろいろと試していこうと思います。