Power Automate Desktop データテーブル(二次元配列)

2023年3月12日

English version.

表形式のデータを扱うデータテーブル(二次元配列)について紹介します。

BGM. Music by mubert.com

Power Automate Desktopのデータテーブルは、テーブル形式でデータを格納するための機能です。データテーブルを使用することで、複数の行と列から構成されるテーブル形式のデータを簡単に扱うことができます。

例えば、Excelファイルやデータベースからのデータを読み込み、Power Automate Desktopのデータテーブルに格納することができます。

データテーブルは、Power Automate Desktopのアクションや条件分岐などの様々な機能と組み合わせて利用されます。例えば、特定の条件を満たす行のみを抽出して、別のアクションに渡すことができます。

作成用ツール

Excelに記述した構造のデータテーブルの数式を作成するツールです。

リンク

データテーブル(二次元配列)について

作成

「新しいデータテーブルを作成する」アクションで作成

「変数」の「データ テーブル」より「新しいデータテーブルを作成する」をワークスペースに設置します。

「編集」をクリックします。

データテーブルの初期値を設定します。

列名をダブルクリックすると編集可能です。

右の「+」をクリックすると列追加、下の「+」をクリックすると行追加です。

セルをダブルクリックすると要素の値を設定します。

{x}をクリックすると変数を指定可能です。

左側の行数を右クリックすると削除や値のクリアが可能です。

列名も同様に右クリックで削除や値のクリアが可能です。

0行(空)のデータテーブルを作成

「新しいデータ テーブル」を作成するアクションではデータ行のないテータテーブルを作成できません。

(作ることが出来ても、データ追加が出来ないので無意味)

あとで追加するための列だけ作成したい場合は、最初に仮の1行目を作り、

「データ テーブルから行を削除する」アクションで仮の1行目を削除します。

仮の1行目を作りデータテーブルを作成
仮の1行目を削除(行インデックスは0)

ファイルから読み込む

次のアクションを利用してExcelやCSVから作成することも可能です。

Excel ワークシートから読み取り

CSVを読み取ります

変数の設定で行う

基本的にアクションで行う方が無難ですが、

作成するテーブルによってはこちらで行う方が簡潔で、手間が少ない場合があります。

昔のフローには作成アクションがなかったため、

この方法での作成が残っているケースもあります。

また列名を変数にしたい場合は、こちらの方法で実施する必要があります。

アクションの「変数」より「変数の設定」をドラッグします。

「変数」に変数名を指定して、「値」にデータテーブルを指定します。

まず数式を意味する%で囲み、データテーブルを意味する{}で囲みます。

そして{}の中に,区切りで行を[]囲みで指定します。

行の中では列を,区切りで指定します。

例えば次のような表は %{[1, 'いぬ'], [2, 'ねこ'], [3, 'ぶた']}% と指定します。

ここの指定は変数でも構いません。

1いぬ
2ねこ
3ぶた
作成されたデータテーブル
列名を指定

列名は^を付けて指定します。

列のみを指定すると空(0行)のデータテーブルになります。

%{ ^['No', 'Name'], [1, 'いぬ'], [2, 'ねこ'], [3, 'ぶた'] }%
作成されたデータテーブル

列名には変数も指定可能です。

作成済みデータテーブルへの操作

値を取得

%データテーブル[行番号][列番号]%と指定します。

データテーブル変数dtから、最初の行の最初の列を取得する場合は%dt[0][0]%とします。

列名がある場合、列名でも指定可能です。

要素の検索・置換

「変数」、「データ テーブル」より「データ テーブル内で検索または置換する」を設置します。

アクション設置後、パラメータを設定します。

項目指定値
データ テーブル対象のデータテーブルを指定します。
検索モード「検索」か「検索して置換」を選択します。
すべての一致・オン:検索結果全てを対象
・オフ:最初の検索結果のみを対象
検索するテキスト探すテキストを指定します。
正規表現を使用して検索するオンにすると正規表現による検索を行います。
正規表現を利用すると数値のみや、
前方一致のような検索が可能になります。
一致するサポート案件英字の大文字・小文字を区別する場合、オンにします。
正規表現を使用する場合は指定できません。
セルの内容が完全に一致するオンの場合は部分一致、オフの場合は完全一致で検索します。
正規表現を使用する場合は指定できません。
置換するテキスト一致部分を置き換えるテキストを指定します。
検索モードが「検索して置換」の場合のみ指定します。
検索条件・すべての場所:すべての列を検索・置換の対象
・列の場合:検索・置換対象列をインデックスか列名で指定
列のインデックスまたは名前検索条件が列の場合にのみ指定。検索・置換対象を指定します。

検索結果は生成された変数としてデータテーブル形式で取得します。

置換も行う場合は検索対象のデータテーブルの中身が更新されます。

結果となる生成された変数の初期設定はDataTableMatchesです。

一致する結果が存在しない場合は生成された変数が0件になります。

%DataTableMatches.RowsCount%が0なら一致なし、1以上なら一致するものがあります。

%DataTableMatches[#]['Row']%
%DataTableMatches[#]['Column']%

要素の追加

「行をデータ テーブルに挿入する」アクションを利用する

「行をデータ テーブルに挿入する」アクションを設置します。

パラメータを指定します。

項目設定値
データ テーブル追加するデータテーブルを指定
挿入場所末尾か先頭かを指定
新しい値追加行を指定。例:%[4, 'うし']%
変数の設定で行う

+演算子を利用します。

この方法では末尾に追加のみが可能です。(先頭には不可)

こちらの利用は推奨しませんが、「行をデータ テーブルに挿入する」アクションより先に実装された方法のため

過去のフローに残っている可能性があります。

項目設定値
変数データテーブル変数
データテーブル変数 + 追加する要素

行を削除

行を削除するには「データ テーブルから行を削除する」を利用します。

「データテーブル」に行削除対象のデータテーブル、

行インデックスに削除する対象を指定します。

このインデックスは先頭行を0とする連番です。

行インデックスはそのままでは特定できないケースが多いため、

先に行数の検索(DataTableMatches.Row)を行うことが殆どでしょう。

列を削除

Excelの起動」アクションを使用して「空のドキュメントを使用」を選択します。

Excel ワークシートに書き込み」でA1セルにデータテーブルの内容を書き込みます。

Excel ワークシートに列を削除」を利用して削除する列を指定します。

この列は先頭(A列)が1から始まる連番です。

Excel ワークシートから読み取る」を設置して、

「ワークシートに含まれる使用可能なすべての値」を選択します。

このアクションの生成された値に列削除後のデータテーブルが設定されます。

行数を取得

数式で %データテーブル.RowsCount% と指定します。

列名を取得(Columns と ColumnHeadersRow)

数式で %データテーブル.Columns% と指定するとリストの形式で列名を取得します。

数式で %データテーブル.ColumnHeadersRow% と指定するとデータ行の形式で列名を取得します。

ColumnsとColumnHeadersRowは基本的には同じ動きをします。

For Eachでループする場合はどちらも列の数だけループし、

別のデータテーブルにデータ行として追加可能です。

異なるのは「Excel ワークシートに書き込み」に利用する場合です。

Columnsでは縦(列)方向に書き込まれますが、

ColumnHeadersRowでは横(行)方向に書き込まれます。

この用途には基本的にColumnHeadersRowを利用するでしょう。

CSVファイルに書き込みます」ではどちらも横(行)方向です。

列数を取得

数式で %データテーブル.Columns.Count% と指定します。

空かどうかを確認

数式で %データテーブル.IsEmpty% と指定します。

空であればTrue、そうでなければFalseが結果になります。

データテーブル列をリストに取得

アクションの「変数」より「データテーブル列をリストに取得」をドラッグします。

「データ テーブル」にデータテーブル変数を指定し、

「列名またはインデックス」に取得する列を指定します。

(最初の列のインデックスは0です)

「生成された変数」の名前を変えなければ「ColumnAsList」に取得列が格納されます。

ループ(For each)

「For each」を設置して、「反復処理を行う値」にデータテーブル変数を指定します。

「生成された変数」の名前を変えなければ「CurrentItem」に、その時の行が格納されます。

数式で%CurrentItem[列番号]%と指定すると、その行の値を取得します。

次の記事

サブフロー

何度も行うフローを一か所にまとめておくサブフローの使い方を紹介します。

Power Automate Desktopを効率的に習得したい方へ

当サイトの情報を電子書籍用に読み易く整理したコンテンツを

買い切り950円またはKindle Unlimited (読み放題) で提供中です。

Word-A4サイズ:1,700ページの情報量で

(実際のページ数はデバイスで変わります)

基本的な使い方から各アクションの詳細な使い方、

頻出テクニック、実用例を紹介。(目次

体系的に学びたい方は是非ご検討ください。

アップデートなどの更新事項があれば随時反映しています。(更新履歴

なお購入後に最新版をダウンロードするには

Amazonへの問い合わせが必要です。

関連記事

初心者向けの記事一覧

活用例

URLパラメータをデータリストに変換する方法

数値のリストに順位(ランキング)をつける方法

偏差値を取得する方法