ASAHI Accounting Robot Research Institute ASAHI Accounting Robot Research Institute

「Power Automate for desktopでPower Fxを使ってみる」T2 Blog

皆さんこんにちは、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 に関する書籍を出版、監修しております。