2023年12月に公開されたPower Automate for desktop(PAD)のバージョン 2.39 にて、新しくPower Fxが使えるようになりました。
本記事ではPower Fxとは何か。そして、Power Fxの利用方法について解説していきます。
なお、2023年12月時点ではプレビュー版の機能です。そのため今後仕様が変更される可能性がありますのでご注意ください。
目次
Power Fxとは
Power Fx は Microsoft Power Platform 全体で使用されるローコード言語です。可能な限りExcelに近いタイプ、演算子、関数を使うため、Excelの知識が活用できます。
※ノーコード/ローコードについては、こちら
Power Fx は2021年3月にMicrosoftから正式に発表されており、今までは主にPower Apps上で用いてアプリ上の動作制御を実施する用途で主に使用されていました。
【Power Appsで使用されているPower Fx】
・加算
・条件分岐
・現在の日付と時刻を取得
上記のように、Excelで使用するような関数の知識を活用し、Power Apps上の表示を管理できます。
このような、Power Fxの機能がPower Automate for desktop(PAD)のバージョン 2.39よりPAD上でも使用できるようになりました。現在、使用できる関数式は以下に記載されています。
https://powerapps.microsoft.com/en-us/blog/what-is-microsoft-power-fx/
Power Fxの使用方法
Power Automate for desktop(PAD)上で、Power Fxを有効にする際には、フローを作成する時点で選択する必要があります。ロボット一体ずつ、Power Fxを有効にするか否か選択し作成します。
Power Fxを有効にする際は、新規フロー作成時に「Power Fxが有効」オプションをオンに変更し、作成を開始します。
作成すると、以下のようにロボットフロー上部に「このフローで Power Fx(プレビュー)を使用できます」という表示が出てきます。
上記のメッセージが出ている状況になれば、Power Fxを使用できます。
Power Fx使用時の違い
Power Fxが有効な状態と、Power Fxが無効な状態ではフロー作成時の画面に違いがあります。
以下に、違いを記載していきます。
①変数の初期状態の違い
Power Fxが有効な状態では、使用していない変数の型は全て”リスト一般の値”になっています。
Power Fxが無効な状態では、使用していない変数の型は作成したフローによって異なっています。
②変数の宣言をする際の違い
Power Fxが有効な状態では、使用する変数の名前の前後に%の入力が不要になりました。
以前同様%を入力して保存をすると、エラーが表示されます。数値やテキストを変数に保存する際は%を使わずに入力してください。
③変数に式を入れる際の違い
Power Fxが有効な状態では、式を記載する際に”=”が必要になりました。
以下は、【エクセルを一行ずつ繰り返し処理するFor eachアクション】をテスト作成したアクションの内部です。
Power Fxが有効な状態では以下のように先頭に=が入るようになります。
④テーブルやリストのインデックスの違い
Power Fxが有効な状態では、インデックスは1からスタートとなります。
Power Fxが無効な状態では、インデックスが0から始まっていたため、以下のようなエクセルを読み取って加工する際に行インデックスの数値と実際の行数値にズレが生じていましたが、そのような心配がなくなります。
⑤テーブルやリストの処理方法の違い
DataTable や List を操作する際に、Power Fxが無効な状態ではExcelData[0][1]のように指定をして値を使用できましたが、Power Fxが有効な状態では[]を用いた記載が出来なくなりました。
以下の関数を使用し、値を抽出する必要があります。
データテーブル (テーブル名:DataTable) から抽出する場合 |
=ReadCell(DataTable,行インデックス,列インデックス) |
行データ (変数名:DataRow) から抽出する場合 |
=ReadCell(DataRow,列インデックス) |
リスト (変数名:List) から抽出する場合 |
=Index(List,インデックス) |
上記エクセルを元に説明します。
国語と記載されているセルを指す方法は、以下の通りです。
Power Fxが有効な状態 | =ReadCell(ExcelData,2,1) |
Power Fxが無効な状態 | %ExcelData[0][1]% |
⑥アクション項目の違い
Power Fxが有効な状態では、複数のアクションが使用できなくなりました。主にリストやテーブルに関するアクションが標準ライブラリから削除されています。
左)Power Fxが有効な状態
右)Power Fxが無効な状態
【削除された項目(例)】
・データテーブルの項目全般・リストのクリア・リストから項目を削除する
・一覧の並べ替え・リストのシャッフル・リストの統合
・リストを逆にする・リストから重複した項目を削除・共通リスト項目の検索
・リストの内容を減らす・データテーブル列をリストに取得・JSONをカスタムオブジェクトに変換
・カスタムオブジェクトをJSONに変換・項目をリストに追加・新しいリストの作成
・Case・Default case・Switch
⑦アクション内部の記載方法の違い
Power Fxが有効な状態では、アクション内部にエクセルの計算式のようなコードを記載できるようになりました。
以下は、変数の設定アクション内で現在時刻を取得するNow関数を使用した例です。
Power Fxが有効な状態では、以下のような結果が変数に保存されます。
同様の記載をPower Fxが無効な状態で作成・実行すると以下のように保存されます。
上記のように、Power Fxが有効な状態では、Excelで使用する関数式のようなコード記載が可能になります。
実用例
Power Fxが有効な状態と無効な状態で、それぞれ同様のロボットを作成してみました。
上記に記載させていただいたような関数の使用・テーブル上の処理を含んだ簡単なロボットです。
【自動化業務例】
エクセルに記載されている各テストの点数のうち、80点以上の教科のC列に「合格」と記載する。
エクセルは以下のイメージです。
左)Power Fxが有効な状態
右)Power Fxが無効な状態
相違点
Ⅰ.各変数内の記載が「=」で始まるようになりました。
Ⅱ.使用する関数式が、Excelで使用している形式に変更されました。
例)データテーブル内の列数を数える方法
Power Fxの項目がOnの時 (新しい機能使用時) |
CountRows(テーブル名) |
Power Fxの項目がOffの時 | テーブル名.RowsCount |
Ⅲ.テーブル内の要素の指定方法が変わりました。
Power Fxの項目がOnの時 (新しい機能使用時) |
ReadCell(テーブル名、行インデックス、列インデックス) |
Power Fxの項目がOffの時 | テーブル名[行インデックス][列インデックス] |
Ⅳ.配列内の数値が変わりました。
Power Fxの項目がOnの時 (新しい機能使用時) |
配列は1から始まるため、B列を示す列インデックスは2 行を示すインデックスはエクセルの行と同数 |
Power Fxの項目がOffの時 |
配列は0から始まるため、B列を示す列インデックスは1 行を示すインデックスはエクセルの行より1小さい |
運用上の注意点
Power Fxの項目がOnの状態で作成したロボットの一部を、Power Fxの項目がOffの状態で作成しているのロボットに転記するとエラーが発生します。
その際、変数の中身だけ変更するのではなく、アクションを最初から作成する必要があります。
Power Fxの項目がOffの状態で作成したロボットの一部をPower Fxの項目がOnの状態に移動することは可能です。
作成してみた個人的感想
これまでにPADでのロボット作成を実施していた方は、変数の宣言方法や関数式の記載ルール、テーブルの使用方法が変わるため最初戸惑いが発生するかと思いますが、Excelを使用する業務内で使っていた関数式がPAD上でも使用できるため、作成は容易になりました。
Power Fxの項目をOnにすると作成が容易になりますが、作成済みのロボットに関して現段階では影響が出ておりませんので、無理に作成しなおす必要はありません。
まずはこの記事を参考に、触ってみてください!
Power Platformの活用を支援するサービス「Robo Runner」
RPAの導入・サポートにご興味をお持ちの方はRobo Runnerのご活用を検討くださいませ。
コメントを残す