今回はPower AutomateでCSVを取り扱う方法について記載します。
Power Automate(クラウドフローのほう)を使い始めたとき、割と早い段階でハマるポイントとして「CSVコネクタないやん!」という問題があります。Power AutomateでCSVファイルを生成することは簡単なのですが、CSVファイルをPower Automateで解釈してデータ操作を行おうとすると途端に難易度が上がります。
Power AutomateでCSVファイルを取り扱う場合、①変数と計算式を駆使してどうにかパースするという方法と、②有料のCSVコネクタを購入する、という方法があります。
しかし、私がおすすめするのは第三の手法「Dataverse for TeamsのDataflow機能を活用する」というメソッドです。Power Appsデータフローという機能を併用することで簡単にPower Automate上でCSVファイルを取り扱うことができます。
Power AutomateでCSVファイルを取り込む方法
例として「CSVファイルがSharepoint上のフォルダに格納されたときに、自動でCSVの中身を解釈して仕訳を会計システムに書き込む」というクラウドフローを考えてみたいと思います。
大きな流れとしては以下のようになります。
- Sharepointにファイルが書き込まれたことを感知する。
- Dataflowを回してCSVをいったんDataverse for Teamsに書き込む
- 書き込まれたデータをDataverseから取り出す。
- 取り出されたデータは構造化されているため、これを加工して会計システムに書き込む。
- 書き込みが終わったら、CSVファイルを別のフォルダに移動させる。
ポイントは2→3のときにDataflowの機能をつかってCSVを解釈してDataverseに一回書き込むとところです。この時に単にCSVをパースするだけではなく、Power Queryの機能を使ってデータを加工することもできます。
実装の手順
ここから、実際に上記の仕組みを実装していく手順をStep by Stepで解説していきます。
事前準備:Dataflowの実装
Power Automateを作る前にCSVを読み込むためのDataflowをつくっていきます。
Power Automateの実装
ここからPower Automateを作っていきます。
このデータを使って、会計システム(今回はBusiness Central)に仕訳データを書き込んでいきます。※詳細は割愛します。
まとめ
・・・ということで、Dataflowという機能を組み合わせることで、割と簡単にCSVファイルをPower Automateの中で取り扱うことができます。
ERPやCRMの導入においては、ほとんどの場合、他システムとの連携が必要となります。相手先のシステムがAPIを公開していない場合は、通常CSV形式でのデータのやり取りが必要となります。
上述の通りPower Automateの中で変数と計算式を使ってCSVファイルをパースすることも可能なのですが、そこからさらにデータを加工したり、日付別にサマリしたりすることを考えると、今回のようにPower Automate内でDataflowをかませてしまうのはとても有効な方法です。また、基本的にマウスポチポチで(つまりノーコードで)実装していくことができますので、保守性や更新性の観点からも有用かと思います。
ただし、このフローが同時に動いてしまうとデータが2重で書き込まれる可能性があるため、必ずトリガーのところでコンカレンシー制御を設定して同時実行されないようにしておく必要があります。詳しくは以下に。