Power Automate Desktop|データテーブルに列を追加する方法

データテーブルに列を追加するにはどうすればいい?

という疑問に答えて、Power Automate for desktopでデータテーブルに列を追加する方法をサンプルフローを使って解説します。

こんにちは。完全自動化研究所のこさいです。結構問い合わせのある内容ですね、これは。具体的な例を挙げながら考えていこうと思います。

下図のようなCSVファイルを読み込んで、データテーブルを作成します。この「SalesDetailData.csv」は675行あるので、[For each]アクションを使ってグリグリ操作するとなると、少し負荷があります。サンプルとしては軽すぎず、重すぎず、というところでしょう(10万件とかになると別次元になるので、この記事では触れません。データベースを使うべきでしょう)。

「SalesDetailData.csv」を使ったフローの概要を下に示します。「SalesDetailData.csv」からデータを取得し、データテーブル[CSVTable]に格納します。データテーブル[CSVTable]の最後の列の後に、[新しい列]という名前の新しい列を追加します。新しい列には値を書き込みます。

下図が列が追加されたデータテーブル[CSVTable]のイメージです。新しい列に「●」というテキストを書き込む条件は、列[SalesAmount]が1,000以下であることです。

Power Automate for desktopにはデータテーブルを操作するアクションが用意されていますが、列を追加するアクションは存在しません。UiPathと比べてデータテーブル関連が充実しているとは言えません。

この場合、3つの選択肢が考えられます。

  1. データテーブルやリストを駆使して何とかする
  2. データテーブル以外のツール(Excel等)を使う
  3. データテーブルをあきらめる

それぞれの方法でフローを作ってみようと思います。どれも正解というわけではないし、他にも方法は考えられるので、参考程度にしてください。もっと良い方法があれば、コメントで教えてくれれば幸いです。

この記事を書いた人
この記事を書いた人
こさい
こさい

(株)完全自動化研究所代表のこさいです。

1) エンジニア歴25年超。RPA開発および支援8年超
2) RPA関連の書籍を5冊出版。現在はGPT×PADの書籍を執筆中!
3)当サイトのプレミアム会員募集中!無限回答、動画見放題。詳しくはこちら

データテーブルやリストを駆使して何とかする

データテーブルやリストを駆使して何とかする方法を考えていきましょう。以下のようなフローが考えられます。

上記フローを解説します。最初にCSVファイルから取得したデータをデータテーブル[CSVTable]に格納します。次に新しいデータテーブル[NewTable]を作成します。データテーブル[NewTable]はデータテーブル[CSVTable]の全フィールド+[新しい列]を持っています。

データテーブル[NewTable]を作成する前提として、データテーブル[CSVTable]が持っている列の数と名前は知らない、ということにします。より汎用的なロジックにできますから。

データテーブル[NewTable]の型が出来上がったら、データテーブル[CSVTable]の件数分ループしながら、データテーブル[NewTable]に列を追加していきます。このループ中に[新しい列]に、値も入れていきます。

新しい列に「●」というテキストを書き込む条件は、列[SalesAmount]が1,000以下であることです。

最後にデータテーブル[NewTable]をデータテーブル[CSVTable]に上書きします。これでデータテーブル[CSVTable]に列が追加されたように見える、というわけです。かなり手間がかかりますね…。

フローを解説

では、上記フロー図をPower Automate for desktopのフローで作った場合を見ていきましょう。

CSVデータをデータテーブル[CSVTable]に格納する

最初に「SalesDetailData.csv」からデータを読み取って、データテーブル[CSVTable]に格納します。「SalesDetailData.csv」はドキュメントフォルダー内に作成した[PAD]という名前のフォルダーに配置されているものとします。

実際にフローを作って確認したい方は以下のボタンからSalesDetailData.csvをダウンロードしてください(ダウンロードするにはユーザー登録(無料)が必要です)。

“SalesDetailData.csv” をダウンロード

SalesDetailData.csv – 12 回のダウンロード – 61.04 KB

SalesDetailData.csvの最初の行には列名が入っているので、[CSVファイルから読み取る]アクションの[最初の行に列名が含まれています]は[有効]にしてください。

新しいデータテーブル[NewTable]を作成する

CSVファイルから取得したデータをデータテーブル[CSVTable]が作成できたので、次に新しいデータテーブル[NewTable]を作成します。データテーブル[NewTable]はデータテーブル[CSVTable]の全フィールド+[新しい列]を持っています。

データテーブル[NewTable]を作成する前提として、データテーブル[CSVTable]が持っている列の数と名前は知らない、ということにします。

4ステップ目で新しいリスト[List]を作っています。このリストにデータテーブル[CSVTable]のヘッダー行(CSVTable.ColumnHeadersRow)を使って、リスト項目を追加します。これで、[CSVTable]が何列あるかを知らなくてもリストを作成できます。

さらに[新しい列]というリスト項目を追加します(8ステップ目)。リスト[List]が完成しました(上図の右側)。

9ステップ目でリストをデータテーブルのカラム名として、データテーブル[NewTable]を作成しています。^(ハット)を付けるとリストをカラム名として認識してくれます。

これで列が追加されたデータテーブルの枠ができました。現在のデータテーブル[NewTable]の様子は以下の図です。

新しいデータテーブル[NewTable]に行を追加する

データテーブル[NewTable]の型が出来上がったので、データテーブル[CSVTable]の件数分ループしながら、データテーブル[NewTable]に列を追加していきます。データテーブル[CSVTable]の値をデータテーブル[NewTable]に転記していく、ということです。加えて、このループ中に[新しい列]に、値も入れていきます。

新しい列に「●」というテキストを書き込む条件は、列[SalesAmount]が1,000以下であることです。

[NewTable]を[CSVTable]に上書きする

最後にデータテーブル[NewTable]をデータテーブル[CSVTable]に上書きします。これでデータテーブル[CSVTable]に列が追加されたように見えます。

1行を追加するだけで大変な手間ですが、「それだけの価値がある」「どうしてもデータテーブルでデータを扱いたいんだ!」という場合はいいと思います。

データテーブル以外のツール(Excel)を使う

データテーブル以外のツールを使う方法を解説します。データテーブルを使うなら、Excelを利用した方がいいでしょう。ただし、Excelがインストールされている端末限定の方法になります。


会員様向けのコンテンツです。会員の方は、ログインをお願いします。

コメント ログインすると書き込めます