皆さんこんにちは、T2ことあさひロボ研の鈴木です。
1年ぶりのブログ投稿です。(AI OCRを中心に仕事していますので、もしよろしければお問い合わせください)
今回は、Power Automate for desktop(PAD) における Power Fx についてです。
ちょっとしたフローを作成しようとしたところ、Power Fx しか使えない(フロー作成時のチェックをオフにしても、なぜか Power Fx での作成モードになってしまう)という事態に陥った※ため、急遽 Power Fx でフローを作ることになりました。
そこで、検証も兼ねて、PADでの Power Fx の使い方を記録しておきます。
ただし、現時点(2023年12月)ではプレビュー機能ですので、ご承知おきください。
※ PADを再起動したところ直りました
参考
Power Fx in desktop flows (preview)
https://learn.microsoft.com/en-us/power-automate/desktop-flows/power-fx
Formula reference – desktop flows
https://learn.microsoft.com/en-us/power-platform/power-fx/formula-reference-desktop-flows
変更点を簡単にまとめ
以下に変更点をまとめていますが、Power Fx はExcelの関数にようなイメージを持っていただくと一番しっくりきます。
最初は VLookup ってなに?というかたも、何回か使ってみると便利さに気づき、様々なシーンで使うようになった経験がないでしょうか。
なのでExcelの関数が使えるから、Power Fx も使えるかもというように、ライトに構えていただけると、始めやすいと思います。
1)変数は%で囲まない
従来の Power Automate では、式や変数を記述する際、%で囲む必要がありましたが、Power Fxでは%は不要となりました。
そのため「100%%」のようにエスケープする必要もなくなりました。
その代わり、=から式を開始する必要があります。
2)インデックスは[]で指定できない
DataTable や List を操作する際には、ExcelData[0][1] のように指定することで、どの値を使用するか指定することができましたが、Power Fxでは[]が使用できません。
代わりに関数を使用して操作することになります。
DataTable | =ReadCell(DataTable, 行インデックス, 列インデックス) |
DataRow | =ReadCell(DataRow, 列インデックス) |
List | =Index(List, インデックス) |
3)インデックスは1からスタート
PAD初心者泣かせのインデックスの「0」ですが、Power Fxでは1から値が始まります。
Excelのデータを操作する場合は、ズレがなくなるので分かりやすくなります。
4)条件式は自分で書く
従来Ifアクションを使用する場合は、オペランドを入力し、条件を選択する形でしたが、Power Fxでは関数を用いて、自分で式を書く必要があります。
と等しい(=) | =Result.Value=”鈴木” |
と等しくない(<>) | =Result.Value<>”鈴木” |
より大きい(>) | =Number>5 |
以上である(>=) | =Number>=5 |
より小さい(<) | =Number<5 |
以下である(<=) | =Number<=5 |
次を含む | =Find(“鈴木”, Result.Value)>0 ※IsMatchが使えない |
次を含まない | =Not(Find(“藤”, Result.Value)>0) =IsBlank(Find(“鈴木”, Result.Value)) |
空である | =IsBlank(Result.Value) |
空でない | =Not(IsBlank(Result.Value)) |
先頭 | =StartsWith(Result.Value, “鈴木”) |
先頭が次でない | =Not(StartsWith(Result.Value, “鈴木”)) |
末尾 | =EndsWith(Result.Value, “鈴木”) |
末尾が次でない | =Not(EndsWith(Result.Value, “鈴木”)) |
4)シングルクォーテーション’ではなくダブルクォーテーション”で囲む
従来は %’001’%のように、文字を表す場合は’で囲んでいましたが、Power Fx において文字は”で囲む必要があります。
今回やりたいこと
Excelのマスタを元に、フォルダを一括で作成したい
実践
それでは実際に作成していきます。
まず「Excelの起動」アクションを配置します。
ここはなにも変更がありません。
ただ、よく見てみると若干ですが、アクションペインの表示が変わっているようでした
次に「Excelワークシートから読み取る」アクションを配置します。(ここもアクション設定画面は変更がなかったため、割愛します)
次に「For each」アクションを配置します。
そして「フォルダーの作成」アクションを配置し、フォルダ名を指定します。
ここで Power Fx の関数が出てきます。
今回は既に For each を使用し、DataTableからDataRowになっているので、ReadCellに列インデックスを渡せばOKです。
※ 「Warning: Deferred type provided.」の警告が出ますが、無視していいようです。
最後に空白など余計なデータが入らないように念のため、「If」アクションで条件設定を行います。
ReadCellは同じく設定しますが、「空白だったらループ終了」という条件を設けたいので、IsBlankで囲みます。
最後にループを抜けるアクションを配置すれば完成です。
実行したところ、正常にフォルダが作成されました。
感想
Power Automate for desktop のみを使っているかたは、慣れが必要かなと思いましたが、
Power Appsを作成されている方や、関数を使ったり、プログラミングができる方はこちらの方が作りやすい印象です。
現在はまだ一部使用できないアクションや、制限などがあるようですので、本番運用は避けたほうがいいとは思いますが、どんどん進化していくPower Platformにワクワクが止まらないですね。
私もどんどん知識をアップデートして皆さんに最適な方法をご提案していきたいと思います。
ロボ研では、Power Automate を利用したフローの導入・運用・開発支援、
Power AppsなどのPower Platformを活用した効率化支援、
リスキリングに関するご支援を行っております。
お客様の業務効率化・生産性向上に向け、最大限のご支援をさせていただきます。
ぜひご相談ください。
◆ Power Automate / Power Automate for desktop 向けサポートサイト ◆
Power Automate サポート ★一部無償でご覧いただけます★
◆ セミナー定期開催中◆
事務スタッフが始める!自動化・デジタル化Webセミナー(オンライン/無料)
リスキリング経験者&DXアドバイザーによる”現場のリスキリングセミナー
◆ 過去の記事 ◆
ブログ記事一覧
◆ 書籍 ◆
Power Automate for desktop(Power Automate Desktop)や RPA に関する書籍を出版、監修しております。