もっとPower Automate!csvをxlsxに集計

PowerAutomateでcsvをxlsxに集約開発
mohamed HassanによるPixabayからの画像

今回は、集計作業の効率化として、複数のcsvファイルを1つのエクセルファイルに登録するフローをPower Automateで作成します。作業場はOneDrive上になりますが、無料で実装できます。

スポンサーリンク
スポンサーリンク

準備

マイクロソフトアカウントさえあれば、実行可能です。エクセルも不要です。

環境やサインインなどに関しては、前回の無料RPAで作業効率化!Microsoft Power Automateを参照してください。

集計Excelブック作成

フロー上、集計するxlsxファイルには、”テーブル”を作成しておく必要があります。Excel Onlineから、範囲を指定してホームの”テーブルとして書式設定”を実行しておきます。今回、要素セル数は3としました。

CSVファイル作成

登録対象となるcsvファイル(最終空行無し)を、任意のOneDriveフォルダ上に格納しておきます。

a.csv

aaa,1,10
bbb,2,20
ccc,3,30

b.csv

ooo,5,100
ppp,6,200

ワークフロー作成

Power Automateの画面で、ワークフローを作成していきます。

初期設定

まず、[作成]-[インスタント クラウド フロー]を選択します。

フロー名を入力し、”手動でフローをトリガーします“を選択した後、[作成]ボタンをクリックします。

[新しいステップ]をクリックし、”すべて”の”OneDrive”から”フォルダー内のファイルリスト“イベントを選択します。

“フォルダー内のファイルリスト”イベントには、下記を設定します。

  • フォルダー:CSVファイルが格納されているOneDrive上のフォルダ名

次に変数を4つ定義します。[新しいステップ]をクリックし、”組み込み”-“変数”-“変数を初期化する“を選択します。

これを4回繰り返します。設定内容は、下記の表を参照してください。順番は任意です。

名前種類
変数を初期化するコンテンツ文字列(設定なし)
変数を初期化する2改行文字文字列一回だけ改行(リターンキー押下)する
変数を初期化する3行の配列アレイ(設定なし)
変数を初期化する4列の配列アレイ(設定なし)

CSVファイル個数分のループ

csvファイルを複数処理するためのループを作成します。[新しいステップ]をクリックし、”すべて”-“コントロール”-“Apply to each“コントロールを選択します。

“Apply to each”イベントには、下記を設定します。

  • 以前の手順から出力を選択:”動的コンテンツ”-“(フォルダー内のファイルのリストの)ID”

この時点で作成される、内側の”Apply to each”は一旦削除します。

[アクションの追加]をクリックし、”すべて”-“OneDrive”-“ファイルコンテンツの取得“アクションを選択します。

“ファイルコンテンツの取得”アクションには、下記を設定します。

  • ファイル:”動的なコンテンツ”内の”ID”を選択

次に、変数を2つ設定します。[アクションの追加]をクリックし、”組み込み”-“変数”-“変数の設定“を選択します。

設定は下記の表の通りです。これで、各ファイルから改行文字で切り出して、1行ずつ配列に格納します。

使用できる式の詳細は、式関数のリァレンス ガイド – Azure Logic Apps | Microsoft Docsを参照してください。

名前
変数の設定コンテンツ“動的なコンテンツ”から”ファイルコンテンツ”
変数の設定2行の配列“式”に”split(variables(‘コンテンツ’),variables(‘改行文字’))”を入力する

CSVファイル内行数分のループ

取得した行の要素分だけ、xlsxファイルに出力します。

[アクションの追加]をクリックし、”すべて”-“コントロール”-“Apply to each“でもう1ループ作成します。ここのループは分かりやすいように、右側の”・・・”で名前を”loop2″に変更しておきます。パラメータには下記を設定します。

  • 以前の手順から出力を選択:”動的なコンテンツ”から”行の配列”を選択

内側の[アクションの追加]をクリックし、”組み込み”-“変数”-“変数の設定“を選択します。以下で設定します。

名前
変数の設定3列の配列“式”に”split(items(‘loop2′),’,’)”を入力

カンマ区切りで分割した、1行単位の値が”列の配列”に代入されたので、これで各セルに反映させます。

内側の[アクションの追加]をクリックし、”すべて”-“Excel Online(OneDrive)”-“表に行を追加“を選択します。”表に行を追加”アクションには、以下の設定を行います。

  • ファイル:準備で作成したOneDrive上のxlsxファイル
  • テーブル:ドロップダウンに表示されるテーブル名
  • x:”式”に”variables(‘列の配列’)[0]”を入力
  • y:”式”に”variables(‘列の配列’)[1]”を入力
  • z:”式”に”variables(‘列の配列’)[2]”を入力

以上で、フローは完成です。

ワークフロー実行

それでは、フローを実行してみます。今回のフローは手動実行なので、画面上部の[実行]ボタンを押すことで動作します。

もう少し値の加工が必要かもしれませんが、xlsxファイルにcsv値が集約されていることが分かります。

まとめ

Power Automateでは、簡単にデータ作業を自動化可能です。開発元がマイクロソフトなので、Office系アプリケーションとの親和性にも良く、また連携サービスも豊富です。ぜひ活用して、単純作業を自動化してみてください。

また、作業の自動化については、PowerAutomateDesktopでCSVをデータベースにも参考にしてみてください。

以上、Power Automateでcsvデータをxlsxに集計する手順の紹介でした。

コメント