Loading...

2024-01-04(木) 15:00

🛺 Power Automate Desktopを使ってCSVを読み書きする

PowerAutomateWindows
WindowsのPower Automate Desktopを使用して、CSVファイルを読み込んだり書き込んだりする方法を解説します。

目次

前提と注意事項

  • Power Automate Desktop がインストール済みであること。
  • Windows11 Home 22H2 で確認した作業になります。

この記事のゴール

まず Power Automate Desktop で以下のような CSV ファイルを読み込みます。8 列ありますが、5 列目〜8 列目は空の状態です。

読み込むCSVファイル
法人番号,商号又は名称,所在地,変更履歴情報等,行番号,売り上げ,資本金,URL
0000000000001,"株式会社A",住所A,履歴等,,,,,
0000000000002,"株式会社B",住所B,履歴等,,,,,
0000000000003,"株式会社C",住所C,履歴等,,,,,
0000000000004,"株式会社D",住所D,履歴等,,,,,
...省略...

ループ処理を使って読み込んだ CSV ファイルのデータの各行に対して順番に処理を行い、各行の行番号列に行番号を追記しただけの CSV ファイルを Power Automate Desktop で作成することがこの記事のゴールです。

作成するCSVファイル
法人番号,商号又は名称,所在地,変更履歴情報等,行番号,売り上げ,資本金,URL
0000000000001,"株式会社A",住所A,履歴等,0,,,,
0000000000002,"株式会社B",住所B,履歴等,1,,,,
0000000000003,"株式会社C",住所C,履歴等,2,,,,
0000000000004,"株式会社D",住所D,履歴等,3,,,,
...省略...

実際には何の意味もない処理になりますが、CSV の読み書きができればあとは自由に各行に何かしらの処理を追加し、その処理結果を書き込むことができます。

CSV ファイルを読み込む

Power Automate Desktop を起動して新しくフローを作成し、以下のようにcsvと検索するとCSVファイルから読み取るというアクションが表示されるのでこれをダブルクリックします。

「CSVファイルから読み取る」をダブルクリックする

CSVファイルから読み取るをダブルクリックすると、以下のように CSV ファイルから読み取るための設定ダイアログが開くので、ここで読み取りたい CSV ファイルを指定します。以下の画像内の赤枠にあるアイコンをクリックすると、ファイルダイアログから CSV ファイルを選択できます。

読み込むCSVファイルを選択する

ファイルを選択したら続いて詳細をクリックして各自の CSV ファイルに応じて設定します。私が読み込みたい CSV ファイルは最初の行が列名となっているため、最初の行に列名が含まれていますをオンにしました。区切り記号をカンマ以外の場合も指定できます。

詳細設定

保存をクリックすると以下のように表示されるので、試しに実行してみます。

Power Automate Desktopを実行する

実行すると以下のようにフロー変数が更新されて、100行、8列と表示されています。

読み込んだCSVデータ

上記画像の赤線枠内にあるCSVTableをダブルクリックすると、 以下のように中身を確認できます。今回使用している CSV ファイルは、国税庁の法人番号公表サイトで適当に検索した結果の一覧です。

読み込んだCSVデータ

以上で Power Automate Desktop で CSV ファイルを読み込むことができました。続いて読み込んだファイルに新しくデータを書き込みます。

行番号用の変数を作成する

読み取った CSV ファイルのデータの各行に対してループ処理を行います。そのために、ループ処理の中で現在何行目の処理をしているかを把握するために、新しく変数を追加してその中に処理している行番号を保存するようにします。 以下のように、アクションの変数の中にある変数の設定をダブルクリックします。

変数の設定

変数の設定をダブルクリックすると 以下のようなダイアログが開くので、値を0とします。また、ここでは変数名をLoopIndexとしました。(変数名は青背景にNewVarとなっている部分をダブルクリックすると変更できます。)保存ボタンをクリックします。

変数の設定

ループ処理を行う

読み込んだ CSV ファイルのデータが格納されたCSVTableの各行に対してループ処理を行います。以下のように、forと検索して表示されるFor eachをダブルクリックします。

For eachを使用する

以下のようなダイアログが開きます。画像内の赤矢印で示した通り{x}をクリックするとループ処理を行いたい値を選択できるので、ここでCSVファイルのデータが格納されているCSVTableを選択して選択ボタンをクリックします。

For eachの設定

選択ボタンをクリックすると以下のように表示されます。CSVTableに対してループ処理を行い、各行の値がCurrentItemという変数に格納されることを意味します。保存をクリックします。

For eachの設定

保存をクリックすると以下のようになります。以降では、追加したFor eachアクションの中に各行に対して行いたい処理を追加していきます。

For eachの設定

各行に対するアクションを追加する

For each内で、まずLoopIndex変数をループ処理毎に+1するために、以下のように変数を大きくするを使用します。

変数を大きくする

変数を大きくするをダブルクリックすると以下のように表示されます。変数名はLoopIndexを指定し、大きくする値は1とします。これにより、For eachによるループ処理が行われる度、すなわち各行の処理が行われる度にLoopIndexは1づつ増えていきます。LoopIndexの値を参照することで今どの行を処理しているかを確認できます。

変数を大きくする

現時点でフローは以下のようになっています。

変数を大きくする

データを更新する

あとは以下のようにデータ テーブル項目を更新するを使ってデータを更新していきます。

データ テーブル項目を更新する

データ テーブル項目を更新するをダブルクリックして開き、以下のように設定します。

データ テーブル項目を更新する

上記は以下を意味します。

  • データテーブル:更新したいテーブルの指定
  • 列:更新したい列番号の指定(列番号は 0 スタートのため、1 列目は0、2 列目は1となります。上記画像内では4としているため、5 列目を指定しています。)
  • 行: 更新したい行番号の指定。ここでLoopIndexを指定することで、For eachで処理中の行を指定しています。
  • 新しい値:新しい値を指定します。ここでは、例として行番号自体を指定しています。

保存ボタンをクリックします。 これで読み込んだ CSV ファイルのデータを更新できたので、あとは新しい CSV ファイルに書き込みます。

現時点で以下のようになっているはずです。

データ テーブル項目を更新する

CSV ファイルに書き込む

最後に、以下のようにCSVファイルに書き込むを使用して CSV ファイルに書き込みます。

CSVファイルに書き込む

CSVファイルに書き込むをダブルクリックして開き、以下のようにします。

CSVファイルに書き込む

For eachで更新したCSVTableのデータを、ファイルパスに指定した CSV ファイルに書き込む設定になります。以下のように詳細で列名を含むか、区切り文字の指定などを設定できます。

CSVファイルに書き込む

保存ボタンをクリックします。これでフローが完成しました。実行ボタンをクリックして実行してみます。実行すると、元の CSV データの各行の 5 列目に行番号(0 スタートなので Excel などの行番号から-1 になっています。)が書き込まれた CSV ファイルができているはずです。

作成したフローは最終的に以下のようになっています。

CSVファイルに書き込む

まとめ

本記事で紹介した例では、書き込むデータが行番号だけで実際には何の意味もないですが、CSV ファイルの読み書きができれば、あとはループ処理の中で各行の値に応じて何かを計算したり API でデータを取得したりしてその値を書き込むなど、応用で色々なことができると思います。