見出し画像

Power Automate for desktopでデータテーブルのソートやフィルタリングを行う方法

先日、Power Automate for desktop(PAD)の「.NET スクリプト実行」アクションを使ってデータテーブルに列を追加する方法について記事を書きました。

今回は同様に「.NET スクリプト実行」アクションを使ってデータテーブルのソートやフィルタリングを行う方法をご紹介します。


「.NET スクリプト実行」アクションを使ってデータテーブルをソートする

まずは下記のようにFullName列とGender列、Age列を持つ、元となるデータテーブル(%UserDataTable%)を用意します。

%{ ^['FullName', 'Gender', 'Age'], ['Grazia Codeman', 'Female', 18], ['Constantina Brierton', 'Female', 22], ['Jeanelle Dulin', 'Female', 16], ['Willamina Segge', 'Female', 25], ['Lauryn Bygrove', 'Female', 17], ['Jonis Fedynski', 'Female', 24], ['Vaclav Akrigg', 'Male', 21], ['Hanako Tanaka', 'Female', 15], ['Fayre Watkinson', 'Female', 20], ['Ulysses Tappin', 'Male', 19] }%

次はソートする条件(FullName ASC)を変数(%SortCriteria%)として設定します。

続いて「.NET スクリプト実行」アクションを使ってデータテーブルをソートするコードを設定します。各パラメーターの設定方法は先日の記事をご参照ください。

DataViewを使ってソートするだけの簡単なコードです。

DataView dv = srcTable.DefaultView;
dv.Sort = sortCriteria;
sortedTable = dv.ToTable();

上記フローを実行すると、データテーブル(%UserDataTable%)の値が指定した条件でソートされることが確認できます(%SortedUserDataTable%)。

「.NET スクリプト実行」アクションを使ってデータテーブルをフィルタリングする

続いてフィルタリングです。
フィルタリングする条件(Age >= 20)を変数(%FilterCriteria%)として設定します。

ソートと同様に「.NET スクリプト実行」アクションを使ってデータテーブルをフィルタリングするコードを設定します。

DataView dv = srcTable.DefaultView;
dv.RowFilter = filterCriteria;
filteredTable = dv.ToTable();

上記フローを実行すると、データテーブル(%UserDataTable%)の値が指定した条件でフィルタリングされることが確認できます(%FilteredUserDataTable%)。

フロー全体

今回作成したフローは下記の通りです。

SET UserDataTable TO { ^['FullName', 'Gender', 'Age'], ['Grazia Codeman', 'Female', 18], ['Constantina Brierton', 'Female', 22], ['Jeanelle Dulin', 'Female', 16], ['Willamina Segge', 'Female', 25], ['Lauryn Bygrove', 'Female', 17], ['Jonis Fedynski', 'Female', 24], ['Vaclav Akrigg', 'Male', 21], ['Hanako Tanaka', 'Female', 15], ['Fayre Watkinson', 'Female', 20], ['Ulysses Tappin', 'Male', 19] }
SET SortCriteria TO $'''FullName ASC'''
Scripting.RunDotNetScript Language: System.DotNetActionLanguageType.CSharp Script: $'''DataView dv = srcTable.DefaultView;
dv.Sort = sortCriteria;
sortedTable = dv.ToTable();''' @'name:srcTable': UserDataTable @'type:srcTable': $'''Datatable''' @'direction:srcTable': $'''In''' @'name:sortCriteria': SortCriteria @'type:sortCriteria': $'''String''' @'direction:sortCriteria': $'''In''' @'name:sortedTable': $'''''' @'type:sortedTable': $'''Datatable''' @'direction:sortedTable': $'''Out''' @sortedTable=> SortedUserDataTable
SET FilterCriteria TO $'''Age >= 20'''
Scripting.RunDotNetScript Language: System.DotNetActionLanguageType.CSharp Script: $'''DataView dv = srcTable.DefaultView;
dv.RowFilter = filterCriteria;
filteredTable = dv.ToTable();''' @'name:srcTable': UserDataTable @'type:srcTable': $'''Datatable''' @'direction:srcTable': $'''In''' @'name:filterCriteria': FilterCriteria @'type:filterCriteria': $'''String''' @'direction:filterCriteria': $'''In''' @'name:filteredTable': $'''''' @'type:filteredTable': $'''Datatable''' @'direction:filteredTable': $'''Out''' @filteredTable=> FilteredUserDataTable

おわりに

以上のように、「.NET スクリプト実行」アクションを使うことによって、ほんの数行のコードでデータテーブルのソートやフィルタリングを行うことができるようになります。

データテーブルを扱うのであれば、活用する機会もあると思いますので、興味がある方は是非一度「.NET スクリプト実行」アクションを試してみてください。

2024/7/10 追記:

バージョン 2.45 で追加されたアクションによって、データ テーブルに対して列の追加や重複行の削除、マージやフィルタリングといった操作が簡単にできるようになりました。

この記事が気に入ったらサポートをしてみませんか?