こんにちは。
肩の不調で整体にいって電気を流してもらったところ「キミは電気に強いね!」「普通の二倍いくよ!」とか言われて調子に乗った波多野です。電気のぞわぞわがクセになりそうでやばい。

さて、早速ですが皆さんは「Box」を使ったことがありますか?
世の中には多くのオンラインストレージがありますが、Boxは当初から法人を中心にサービスを展開していて、セキュリティや組織でのポリシー管理に定評のあるストレージサービスです。

今回はこの「Box」にコラボフローの添付ファイルを保存する連携を作ってみようと思います。
連携の起点となるのはコラボフローのWebhook機能、中継サービスには例によってMicrosoft Power Automateを使います。

コラボフローのフォーム

連携にあたり、あらかじめ次のような稟議書フォームを作成しました。同様に経路もシンプルなものを作成済みです。この稟議書の「添付資料」をBox上のフォルダに書き出すよう設定を行っていきます。

Power Automateの設定

次にPower Automateの設定を行います。設定の大まかな流れは次の通りです。

(1)コラボフローのWebhookで送られたデータをPower Automateが受信
(2)コラボフローの添付ファイルをPower Automateが取得
(3)Power Automateが取得した添付ファイルをBoxに保存

Power Automateにログインし、左メニューの「作成」をクリックすると、フローを作成するための方法を選択する画面が表示されますので「インスタントクラウドフロー」を選択します。

「このフローをトリガーする方法を選択します」から「HTTP要求の受信時」を選択し、「作成」をクリックします。

フロー作成の画面が表示されますので「新しいステップ」をクリックします。

アクションを選択する画面が表示されるので「組み込み」タブを開いて「HTTP」アクションを選択します。
※「HTTP」アクションを使うには「プレミアム コネクタ」を利用可能なライセンスが必要です。

HTTPアクションの設定画面が表示されますので、コラボフローの添付ファイルを取得するための各種設定を行います。
添付ファイルの取得にはコラボフローREST APIの添付ファイルのダウンロードを使用します。

(1)方法
添付ファイルのダウンロードAPIで使用するHTTPメソッドです。ここでは「GET」を指定します。

(2)URI
添付ファイルのダウンロードAPIのURIを指定します。
URIにはファイルIDを指定する必要がありますので、Power AutomateのtriggerBody()関数を使って、Webhookで送られてきたデータから添付ファイルのファイルIDを取得します。

https://cloud.collaboflow.com/example/api/index.cfm/v1/files/@{triggerBody()['contents']['fidAttachment']['value']}/download

※今回作成した稟議書では「添付資料」パーツのfidを「fidAttachment」としています。この部分は連携させたいパーツの実際のfidに読み替えてください。
※今回は指定したキーが存在しない場合はエラーとしたいので、疑問符演算子は使用していません。

(3)ヘッダー
APIに接続するためのHTTPヘッダーを指定します。
コラボフローのAPI認証に必要な「X-Collaboflow-Authorization」ヘッダーを指定します。

これでコラボフローの添付ファイルを取得する処理を作成できました。次にBoxにデータを保存するためのステップを作成します。

アクションを選択する画面が表示されるので「Box」の「ファイル作成」アクションを選択します。

Boxファイル作成アクションの設定画面が表示されますので、各種設定を行います。
※Power Automate にまだBoxアカウントを接続していない場合は、Boxへのサインインが要求されますので、資格情報を入力して接続を作成します。

(1)フォルダーのパス
[Box上の任意のフォルダパスを指定します。
ここではルート直下の「//Collaboflow/」を指定します。

※ちなみに2021年5月現在、フォルダパスをピッカーで選択すると、ピッカーで選択したフォルダとは別に「すべてのファイル」というフォルダが自動的に作られ、その下にピッカーで選択したフォルダ階層が作られるという謎挙動があるようです。ピッカーを使わずに「//Collaboflow/」のように指定するとルート直下に想定通りのフォルダが作成されます。

(2)ファイル名
任意のファイル名を指定します。今回のファイル名は元々の添付ファイルと同じ名称にしたいので、次のように指定を行います。

@{triggerBody()['contents']['fidAttachment']['label']}

(3)ファイル コンテンツ
先ほどHTTPアクションで取得したファイルコンテンツをセットします。取得したファイルコンテンツは次のようにbodyを使用して指定できます。「’HTTP’」部分は先ほど作成したHTTPアクションのステップ名です。

@{body('HTTP')}

※ここではコラボフローのWebhookデータに含まれる「contents」オブジェクトをトリガーのbody出力から取得し、フォームパーツに入力された情報を取得しています。

以上を踏まえて設定値を入力した「ファイルの作成」アクションが下記となります。

上記の操作が全て終わったら「保存」をクリックします。

最後に、コラボフローからのWebhook送信先となる「HTTP 要求の受信時」アイコンを開いて、「HTTP POSTのURL」をコピーし、記録しておきます。

これでPower Automateの設定は完了です。

2.コラボフローWebhookの設定

次にコラボフロー側のWebhook設定を行います。
あらかじめ用意しておいた「稟議書」の経路を開き「(1)Webhook」タブを選択し、(2)新規登録ボタンをクリックします。

Webhookの設定画面が表示されますので、(1)Webhook名に任意の名前を入力し、(2)通知先のWebhook URLにPower Automateで控えておいた「HTTP POSTのURL」を入力します。通知条件には「申請書の経路終了時」を指定して、最後に「保存」ボタンをクリックして設定を保存します。

以上で、全ての設定が完了しました。

実際の動作

それでは稟議書を申請してみます。
稟議書にデータを入力して申請を行い、承認を行って稟議書を「決裁」の状態にします。

決裁後にBoxを確認すると、この通り指定した「/Collaboflow」フォルダにファイルが書き出されている事を確認できました。

Box上でクリックすると、Box上でファイルのコンテンツを見る事ができます。
データも正常に出力されているようですね。

まとめ

以上のようにWebhookを利用する事で、簡単なステップでBox上に添付ファイルを出力する事ができました。

今回はBoxとの連携を行いましたが、Webhookを応用すると他にもOneDriveやサイボウズガルーン等のさまざまなサービスと連携を行うことが可能です。

ご興味のある方は、ぜひ他の連携記事もチェックしてみてください。

関連記事