今回は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の中身を解釈して仕訳を会計システムに書き込む」というクラウドフローを考えてみたいと思います。

大きな流れとしては以下のようになります。

  1. Sharepointにファイルが書き込まれたことを感知する。
  2. Dataflowを回してCSVをいったんDataverse for Teamsに書き込む
  3. 書き込まれたデータをDataverseから取り出す。
  4. 取り出されたデータは構造化されているため、これを加工して会計システムに書き込む。
  5. 書き込みが終わったら、CSVファイルを別のフォルダに移動させる。

ポイントは2→3のときにDataflowの機能をつかってCSVを解釈してDataverseに一回書き込むとところです。この時に単にCSVをパースするだけではなく、Power Queryの機能を使ってデータを加工することもできます。

実装の手順

ここから、実際に上記の仕組みを実装していく手順をStep by Stepで解説していきます。

事前準備:Dataflowの実装

Power Automateを作る前にCSVを読み込むためのDataflowをつくっていきます。

まず、以下のようなCSVファイルを用意します。

次に適当なTeamsのチームを一個用意して、以下のようなフォルダを準備します。

CSVファイルを上記のTeams (SharePoint)上のフォルダに格納しておきます。

Teamsを立ち上げて、Power Appsをひらきます。

Power Apps (Dataverse for Teams) の画面でデータフローを開き、Sharepointフォルダを選びます。

先ほどCSVファイルを格納したフォルダを指定します。

Contentの横の⇊をクリックします。

Power Queryの機能を使ってCSVファイルを読み込むことができます。オンラインバンキングなどのシステムでありがちなS-JIS形式のファイルにも対応できます。

これをそのまま読み込んでいきます。列名は英語に変えておいた方がよいでしょう。

次へを押して新しいテーブルに読み込むを選んで公開します。一意のプライマリ列の列名が日本語だとエラーになるので要注意。

公開できたら分かりやすい名前に変更しておきます。これでDataflowを使ってCSVを取り扱う部分の開発は完了しました。あとはこのDataflowをPower Automateの部品として呼び出せばOKです。

Power Automateの実装

ここからPower Automateを作っていきます。

SharePointで「ファイルが作成されたとき」をトリガーにしておきます。

最初に作ったImportフォルダを監視しておきます。

次にDataflowを呼び出します。これでCSVファイルがいったんDataverse for Teams上のテーブルに書き込まれます。

上記の処理が完了するのを待つため、ここで新しいトリガーを挟みます。「Dataflowの更新が完了したとき」というトリガーを使います。※旧デザイナー画面じゃないと表示されないので要注意です。

結果的に、1つのフローの中にトリガーを2つ持つというマニアックなフローになります。

Dataflowのトリガーが終わったら、Dataverseの「行を一覧にする」を使って、先ほど取り込まれたCSVデータをレコードとして取得します。

このデータを使って、会計システム(今回はBusiness Central)に仕訳データを書き込んでいきます。※詳細は割愛します。

書き込みが完了したらDataverse側のレコードは削除しておきます。

最後に、Sharepoint上のファイルを別のフォルダに移動するアクションを入れておきます。

まとめ

・・・ということで、Dataflowという機能を組み合わせることで、割と簡単にCSVファイルをPower Automateの中で取り扱うことができます。

ERPやCRMの導入においては、ほとんどの場合、他システムとの連携が必要となります。相手先のシステムがAPIを公開していない場合は、通常CSV形式でのデータのやり取りが必要となります。

上述の通りPower Automateの中で変数と計算式を使ってCSVファイルをパースすることも可能なのですが、そこからさらにデータを加工したり、日付別にサマリしたりすることを考えると、今回のようにPower Automate内でDataflowをかませてしまうのはとても有効な方法です。また、基本的にマウスポチポチで(つまりノーコードで)実装していくことができますので、保守性や更新性の観点からも有用かと思います。

ただし、このフローが同時に動いてしまうとデータが2重で書き込まれる可能性があるため、必ずトリガーのところでコンカレンシー制御を設定して同時実行されないようにしておく必要があります。詳しくは以下に。

Published On: 6月 9th, 2024 / Categories: Power Automate / Tags: , , , , /

資料ダウンロード

詳細な機能紹介や各種セミナー資料を、以下のページからダウンロードいただけます。