PowerAutomteでCSVファイルを処理する

PowerAutomteでCSVファイルを処理する

PowerAutomteでCSVファイルを処理する

データをエクスポートするとCSVファイルがダウンロードされることが多いと思います。
このCSVファイルを処理する際に、普通のプログラミング言語であれば容易に扱うことができますが、プログラムを動かせない環境もあるのではないでしょうか?
そういったときにPower AutomateのフローでもCSVファイルを処理できるようになれば、データ収集の自動化がはかどるので、今回はCSVファイルを処理するフローを作成していきたいと思います。

なお、念のためCSVファイルとは、「,(カンマ)」などでデータを区切っているファイルのことで、下記のようなファイルの中身になります。

 "りんご","ぶどう","みかん"
 "アップル","グレープ","オレンジ" 


フローを作成していく

では早速フローを作成していきます。
今回は手動的なトリガーにしたいので、SharePointの特定のフォルダにファイルが作成された際に起動するようにしておきます。
自動化したクラウドフロー」から、SharePointの「ファイルが作成されたとき(プロパティのみ)」を選択します。なおフロー名は任意です。

  1. トリガーの設定
  2. CSVファイルを格納するフォルダを設定します。

  3. ファイルコンテンツの取得
  4. トリガーはあくまでプロパティしか取得できないので、ファイルの実態を取得する必要があります。
    そのため、SharePointの「ファイルコンテンツの取得」を選択し、先程のトリガーで取得した識別子を設定します。

    これでファイルの中身を取得することができました。

  5. ファイルデータを変数格納
  6. フロー上で処理しやすくするため、ファイルデータを変数に格納しておきます。
    下記のように、「ファイルコンテンツ」を設定します。

  7. 改行区切りをする準備
  8. まずは改行ごとに区切って置く必要があるので、改行コードを変数に格納しておきます。
    この工程は省くことも可能ですが、微妙に挙動が怪しいので、私はなるべく設定しておくようにしています。
    ※何も表示されていないように見えますが、「値」部分でエンターキーを押下しています。

  9. 改行区切りの配列を用意
  10. Split関数を使って、改行コードで区切った配列を作成します。

     split(variables('allLine'),variables('newLineChar'))
    これで配列が作成できました。

  11. 一時格納用の配列変数を用意
  12. 後続の繰り返し処理の中でカンマ区切りしたデータを格納するために配列を用意しておきます。

  13. 確認用の変数を用意
  14. 通常は不要ですが、データを確認するために格納する変数を初期化しておきます。

  15. 配列の要素分繰り返す
  16. コントロールの「それぞれに適用する」、ステップの表示名は「Apply to each」です。
    出力は配列変数の「dataArray」を設定します。

  17. カンマ区切り処理
  18. まずは「Apply to each」で1行ずつデータが取り出されるので、取り出した行を変数の「result」に格納します。
    さらに、この「result」に対してカンマ区切りを行うため、split関数を使用し「commaArray」に格納します。

  19. 確認用変数に格納
  20. 「commaArray」に格納できたら、配列からデータを取り出してresultに格納します。
    配列のデータにはインデックスが振られているので、それを指定してあげれば任意で取り出しが可能になります。
    なお、Power Automateの場合もインデックスは「0」始まりです。

    まずは1つめのデータを取り出します。
    配列の取り出しはこのように、variables関数を利用します。

     variables('commaArray')[0]

    インデックスに関してはvariables関数の後ろにカッコをつけて番号を入力します。
    今回データが1行に3つあるので、3つ分作成しておきます。
    ※データ数がわからない場合は、commaArrayに対しても繰り返し処理を実施してあげればOKです。

以上でフローを作成は完了です。


稼働確認

フローが完了したので、実際にCSVファイルをアップロードして挙動を確認してみましょう。

はじめに設定したフォルダに下記のデータを持つCSVファイルをアップロードしてみます。

 "りんご","ぶどう","みかん"
 "アップル","グレープ","オレンジ"
フローは即時起動ではないので、少しこの状態で待ちます。

一定時間たったらフローの状況を確認してみてください。
処理が完了していたら、実行履歴からフローの稼働結果を確認します。

「Apply to each」のステップを開き、各行ごとに「result1,2,3」を確認してみます。
まず1行目の結果は下記です。

続いて2行目の結果は下記になります。
カンマごとに正しくデータが取り出せていることが確認できます。
これでPower AutomateでCSVファイルの処理を行うことができるようになりました。


まとめ

今回はPower AutomateCSVファイルの処理をするフローを作成してみました。
正直CSVファイルはプログラムコードを書いて処理する方が絶対楽な気はしますが、フローで自動化したい場合もあるかと思います。
そんなときには、このフローを参考にしていただければ、CSVファイルを処理することが可能になります。

ただ注意点として、Power Automateの繰り返し処理は遅い部類です。
そのためデータ数が多い場合などには、工夫が必要になるので気をつけてください。
今回はこの辺で、ではまた。

コメント

このブログの人気の投稿

PowerAppsで座席表を作成する

Power AutomateでTeamsのキーワードをトリガーにする

Power Automateで文字列抽出