こんにちは。
冬の気配が近づいて、自宅オフィスの足元暖房が気になり始めた波多野です。

早速ですが、最近「コラボフロークラウド版で申請が終わったら自動的にCSV出力することってできないですか?」というご質問を多くいただくようになりました。

コラボフロークラウド版には、直接的にCSVの「自動出力」機能が備わっているわけではありませんが、強力な「Webhook機能」を使うことで、申請書データを比較的簡単に外部サービスに出力する事が可能です。

今回はこのWebhook機能とMicrosoft Power Automateを使って、コラボフローのデータをOneDrive上にCSVファイルとして書き込むところまでを作成してみます。

コラボフローのフォーム

今回は次のような稟議書フォームをあらかじめ作成してあります(経路も同様にシンプルなものを作成済みです)。この稟議書データをOneDrive上にCSV出力するよう設定を行っていきます。

Power Automateの設定

最初にPower Automateを使って、コラボフローのWebhookで送られたデータをOneDriveに保存するための設定を行います。

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

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

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

アクションを選択する画面が表示されるので「OneDrive for Business」の「ファイルの作成」アクションを選択します。(今回は「OneDrive for Business」を使いますが、通常のOneDriveでも設定はほぼ同じです。)

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

(1)フォルダーのパス
OneDriveの任意のフォルダパスを指定します。

(2)ファイル名
任意のファイル名を指定します。今回のファイル名は「{文書番号}.csv」の形式にしたいので、次のように指定を行います。

@{triggerBody()['document_number']}.csv

※Power AutomateではtriggerBody()でトリガーのbody出力を取得できます。ここではコラボフローのWebhookデータに含まれる「document_number」をトリガーのbody出力から取得し、文書番号情報を取得しています。
※今回は指定したキーが存在しない場合はエラーとしたいので、疑問符演算子は使用していません。

(3)ファイル コンテンツ
コラボフローのフォームパーツに入力された値は、次のように指定する事ができます。

@{triggerBody()['contents']['fid1']['value']}

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

Excel表示の際の文字化け対策
Power Automate では文字列をすべて UTF-8で処理するので、OneDrive for Business に保存すると、文字コードは UTF-8として保存されます。

このままではExcelOnlineで表示された時にShift-JISでファイルを開いて文字化けしてしまうので、今回は先頭にdecodeUriComponent関数でBOMを追加して、文字化けを回避する事にします。

@{decodeUriComponent('%EF%BB%BF')} 

※実際の運用では作成したCSVをExcelで表示する必要がない限り、BOMの付加が必要となるケースは少ないと思います。BOMを付加するかどうかは実際の利用シーンによってご検討ください。

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

ファイルコンテンツの先頭には、decodeUriComponent関数でBOMを設定し、その後にfid1~fid4の4つのデータを配置して、カンマで区切られたCSV形式のデータが作成されるようにしました。

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

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

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

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

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

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

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

実際の動作

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

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

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

※今回は説明をシンプルにするために日付データの形式をデフォルトのままとしましたが、実際にはPower AutomateのformatDateTime関数を利用して任意の形式に変更した方が良いと思います。

まとめ

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

OneDriveはローカルPCやサーバーとファイルを同期する事も可能ですので、これを利用すればクラウド上のコラボフローで決裁されたデータをCSVとして社内サーバーに同期し、ローカルネットワークにあるシステムにデータを取り込むような運用も可能になるでしょう。

幅広い応用が可能なWebhook機能を、ぜひ皆様の業務にお役立てください。