Power Automate でつかえる Excel Online (Business)コネクタにはソート機能がありません。
テーブルデータを読み込んでソートという手段もありますが、"餅は餅屋"理論でOfficeスクリプトを呼び出す形でも並び替えが可能です。
説明
- 今回のOfficeスクリプトは第3ソートキーまで対応しています。 第2、第3ソートキーは省略可能としています。
- スクリプトを実行しているだけなのでAPI要求数が少ないメリットがあります。
- OfficeスクリプトはVBAと異なり特定のExcelブックに紐づかないのでこういう使い方もできて便利です。
※Microsoft 365 E3 / E5 の環境で動作確認しています。 OfficeスクリプトとPowerAutomateが使える法人向けのライセンスであれば使えのではないかと思います。
実際にソートを実行するOfficeスクリプトを作成する
Excel online で空白のブックを作成し、自動化→新しいスクリプト
下記のコードをコピーしてコードエディターに張り付け、名前を付けてスクリプトを保存
function main( workbook: ExcelScript.Workbook, tableName: string, key1st: number, //colunm number 0- key1stOrder: number, //1:ascending other:descending key2nd?: number, //colunm number 0- key2ndOrder?: number, //1:ascending other:descending key3rd?: number, //colunm number 0- key3rdOrder?: number //1:ascending other:descending ) { let ____1 = workbook.getTable(tableName); if (typeof key3rd != "undefined" && typeof key3rdOrder != "undefined") { // Custom sort on table ____1 ____1.getSort().apply([{ key: key1st, ascending: Boolean(key1stOrder) }, { key: key2nd, ascending: Boolean(key2ndOrder) }, { key: key3rd, ascending: Boolean(key3rdOrder) }], false); } else if (typeof key2nd != "undefined" && typeof key2ndOrder != "undefined") { // Custom sort on table ____1 ____1.getSort().apply([{ key: key1st, ascending: Boolean(key1stOrder) }, { key: key2nd, ascending: Boolean(key2ndOrder) }], false); } else { // Custom sort on table ____1 ____1.getSort().apply([{ key: key1st, ascending: Boolean(key1stOrder) }]); } return 1; }
Officeスクリプトのソートメソッドを各種パラメータをPowerAutomateフローから指定できるようにパラメータ化しただけのお手軽スクリプトです。
Power Automate クラウドフローから呼び出す
パラメータ | 説明 |
---|---|
場所 | ソートしたいExcelブックの場所 |
ドキュメントライブラリ | ソートしたいExcelブックのドキュメントライブラリ |
ファイル | ソートしたいExcelブック |
スクリプト | 上の手順で作成したOfficeスクリプト |
tableName | 【Officeスクリプトのパラメータ】Excelブックに定義されているテーブル名 |
key1st | 【Officeスクリプトのパラメータ】第1ソートキー列(0から) |
key1stOrder | 【Officeスクリプトのパラメータ】第1ソートキーの昇順(1)・降順(1以外) |
key2nd | 【Officeスクリプトのパラメータ】第2ソートキー列(0から) |
key2ndOrder | 【Officeスクリプトのパラメータ】第2ソートキーの昇順(1)・降順(1以外) |
key3rd | 【Officeスクリプトのパラメータ】第3ソートキー列(0から) |
key3rdOrder | 【Officeスクリプトのパラメータ】第3ソートキーの昇順(1)・降順(1以外) |
実行してみる
ソート条件
- 都道府県:昇順
- 年齢:昇順
- 性別:降順
実行結果
before
after