Power Fxを使ってみた

スポンサーリンク

2023年12月のPower Automate for desktopのアップデート(V2.39)から「Power Fx」なるものが使えるようになった。まだプレビュー版なのだが、今後正式に採用されるだろう。さっそく使ってみることにする。

Power Fxは[フローを作成する]ダイアログでフロー名を入力する場所の下に出てくる「Power Fxが有効(プレビュー)」を[有効]にすることで使えるようになる。

Power Fxとはそもそも何だろう?上記画面の説明を見るとこのように書いてある。

Power FxはPower Platformの公式言語です。これはオープンソースであり、Excelの式から受け継いだシンプルさと使いやすさを重視しています。

メッセージボックスにIf文を入れる

よくわからないが、あまり定義にこだわっても仕方がないので、使いながら理解してみよう。ちなみにPower Fxについては、公式サイトに詳しく載っているでそちらを参照してもいい。

さて、簡単なフローを作って確認する。「Power Fxが有効(プレビュー)」を[有効]にした新規のフローを作成し、1ステップ目に[入力ダイアログを表示]アクションを追加する。これはPower Fxを使わないシンプルな入力ダイアログだ。[入力ダイアログのタイトル]に「Power Fxテスト」と入力し、[入力ダイアログ メッセージ]に「何か入力してください。」と入力する。ユーザーが入力したテキストは変数[UserInput]に格納されるということを確認して[保存]をクリックする。

入力ダイアログの設定はできた。次にユーザーが入力したテキストの文字数が5以上か5未満かを判定して、表示を変えるメッセージボックスを設定する。[メッセージを表示]ダイアログを追加して[メッセージボックスのタイトル]に「Power Fxテスト」と入力する。注目してほしいのはここから!

[表示するメッセージ]に「=If(Len(UserInput)>=5,”5文字以上”,”5文字未満”)」と入力できるのだ。Excelのセル内に関数が組み込めるのと同様にIF文を組み込める!変数[UserInput]の文字数はLen関数で調べることができる。

[保存]をクリックして、実行する。「何か入力してください。(画像は「してくだっさい」となっているが、ただの入力間違い)」と言ってくるので、「テストです。」と入力してみる。

[OK]をクリックするとメッセージボックスで「5文字以上」と表示された。

Power Fxを使わなかったら、この動作を実現するには[If]アクションと[Else]アクションを使わないといけなかったわけで、かなりのアクション数削減ができていることがわかるだろう。「もっさり」していたPower Automate for desktopが少しスッキリして、本格的RPAツールになったような気がするのではないか。

Power Fxでテーブルを扱う

もう1つ、サンプルを作って試してみたい。今度はテーブルの扱いだ。細かい解説は省略するが、動作を見てほしい。

最初に[変数の設定]アクションを追加する。[変数]を「NewTable」に変更し、[値]に次のように入力してテーブルを作成する。

=Table(
        { 商品: "財布",    '注文数': 6,  '在庫数': 3 },
        { 商品: "バッグ",    '注文数': 10, '在庫数': 20 },
        { 商品: "帽子",     '注文数': 4,  '在庫数': 11 },
        { 商品: "アクセサリ", '注文数': 7,  '在庫数': 6 }
    )

[保存]をクリックする。実際にこのTableはリストカスタムオブジェクトとして生成される。このアクションの下にもう1つ[変数の設定]アクションを追加する。[変数]を「NewTable2」に変更し、[値]に次のように入力する。

=AddColumns(NewTable,'発注数',If('注文数'>'在庫数','注文数'-'在庫数',0))

これはテーブル[NewTable]に対して、新規のカラム(列)を追加して、しかもカラム間の計算までやってくれるということだ。注文数が在庫数より多かったら差分を発注数とするが、そうじゃなかったら発注しない、という仕掛け。果たしてうまくいくだろうか?

[保存]をクリックしてから、実行してみる。実行しても画面は出ないのですぐ終わる。結果を変数ペインで見てみる。まず、テーブル[NewTable]を見てみると、このようになっている。

0行目の[詳細表示]をクリックするとNewTable[0]が展開されて、[商品]財布[在庫数]3[注文数]6と入っているのがわかる。

では2ステップ目でカラムを追加した[NewTable2]はどうなっているだろうか?変数の値を見ると、このように[発注数]というカラムが追加されて数値が入っているようだ。

先ほど[NewTable]で確認したのと同様に0行目を詳細表示すると下図のようになる。[発注数]があり、[在庫数]3に対して、[注文数]6なので、[発注数]は3と正しい結果が入っている。

ついでに1行目も確認すると[在庫数]20に対して、[注文数]10なので、[発注数]は0とこれも正しい結果が入っている。

このロジックもPower Fxなしで実装しようと思ったら非常にメンドウなことになるだろう。2つのリストカスタムオブジェクトを作って、ぐるぐる回しながら転記と計算をさせることになるのではないか。

実際に使ってみて、まだ使えない関数もたくさんあった。しかし、これはかなり有効な機能となり、Power Automate for desktopが発展する機会になるのではないかと感じる。今後もいろいろと試してレポートしていく。では。

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