![見出し画像](https://assets.st-note.com/production/uploads/images/118161740/rectangle_large_type_2_8b46a4c7220923f4ebb1f3a1b0754f5a.png?width=800)
ぐん税ニュースレター vol.38 page04 -RPA通信-
前回はPowerAutomate for Desktop(以下、PAD)の変数アクションについてご説明しました。
引き続きいくつかのアクションを見ていきましょう。
今回は「条件」グループです。
![](https://assets.st-note.com/img/1696573214539-LEMm8Fu4AN.png)
こちらも変数と同じく、RPAフローを作っていく上では欠かせないアクションですね。極端に単純なフローを除いて、何も判断(条件分岐)をせずに進められるフローはほとんどないと思います。
アクションとしては6つありますが、「If/Else/Else if」と「Switch/Case/Default case」がそれぞれセットになっています。
【Ifアクション】
Ifはそのままの意味で、「もし○○ならば/○○でなければ」といった条件で処理を分岐させることができます。
例えば、毎日稼働させるRPAで5・10日だけ処理を変えたい場合や、あるフォルダに保存されているファイルの名前に特定の単語が含まれているときに処理を実行したい場合などで活用できますね。
ElseはIfの条件を満たさなかったときに実行されますが、Else ifは更に条件分岐をするためのアクションです。
例えば、フォルダ内のファイルを整理したいとき、PDF・PNG・その他で分けたいとしましょう。
この場合、まずIfでPDFかどうかを判断し、条件を満たさない(PDFではない)ものについて、改めてPNGかどうかを判断します。ここでも条件を満たさなかった場合はElseの処理が実行される流れとなります。
※Elseのときに処理が不要な場合、Elseアクションを省略することも可能です。
Ifアクションを開いて「最初のオペランド」と「2番目のオペランド」に比較したい2つの情報を指定、「演算子」で比較方法を選択します。
今回は情報を取得したファイルの拡張子(Extension)と「.pdf」という文字列を比較し、拡張子に.pdfが含まれているかどうかで判断するようにします。
Else ifの場合も設定項目は同じで、「.pdf」を「.png」に変更しています。
![](https://assets.st-note.com/img/1696573275754-3Mi1VxHl8z.png?width=800)
![](https://assets.st-note.com/img/1696573293325-TN1UEUKMjx.png?width=800)
拡張子に応じてメッセージを表示するようにしてみました。
実際の業務で使うのであれば、別々のフォルダに移動したり、通知を出したりといったアクションに繋がっていきます。
![](https://assets.st-note.com/img/1696573354200-RADwBecA95.png)
![](https://assets.st-note.com/img/1696573359500-MllHQVJWIh.png)
【Switchアクション】
Switchは1つの情報に対して2つ以上の選択肢がある場合に利用します。
まず、Switchアクションの「チェックする値」に、判定材料となる情報を設定します。上記のIfと同じく、ファイルの拡張子(Extension)を判断材料とします。
![](https://assets.st-note.com/img/1696573378226-p7Eoprawbl.png?width=800)
続いてCaseアクションにて、拡張子と比較する情報を設定していきます。
設定画面の「比較する値」に.pdfまたは.pngを指定し、「演算子」で比較方法を選択します。
![](https://assets.st-note.com/img/1696573406947-YsWYwGrTv8.png?width=800)
完成したのがこちら。実行結果はIfアクションの時と変わりません。
Default CaseはElseと同じく、どの条件にも合致しなかった場合に実行されます。
![](https://assets.st-note.com/img/1696573429758-nY7no1FnsL.png?width=800)
【注意点】
If・Switch共通の注意点ですが、どれかの条件に該当するとその後の分岐判断はスキップされてしまうので注意が必要です。
下記の例を見てみましょう。
まず、Numberという変数に15を設定し、Numberが5以上か・10以上か・その他か、という形で分岐処理をしています。
![](https://assets.st-note.com/img/1696573453520-K9TSUvkJOo.png?width=800)
この順番でフローを組み立てると、最初の条件 Number >= 5 に合致しますので、3行目のメッセージが表示されます。
4行目のElse if条件である Number >= 10 にも該当しますので、5行目のメッセージも表示されそうですが、どれかの条件を満たしてしまうとIf~Endアクションから抜けてしまうため、4行目の判定は実行されません。
![](https://assets.st-note.com/img/1696573476314-q6PYTeovXv.png?width=800)
そのため、条件が複数ある場合で複数の条件に該当しうるときは、より範囲が狭い条件(上の例では Number >= 10)を先に判定していく必要があります。
![](https://assets.st-note.com/img/1696573483768-5oCbpdsG4k.png?width=800)
Ifアクションを使ってみたけど想定していた挙動をしてくれないという場合は、条件の並び順を確認してみてください。
【IfとSwitchの使い分け】
PADにおいて、IfとSwitchの違いはあまりありませんが、複雑な数式を用いて判断させたい場合、Switchでは対応できません。
例えば、「変数 Number が10より大きく30未満である」かどうかを判断したい場合、最初のオペランドに「%Number > 10 AND Number <30%」と入れ、2番目のオペランドに「%True%」を入れます。
最初の数式で判定した結果が正しい(True)かどうかを条件分岐の判断材料にする形ですね。
![](https://assets.st-note.com/img/1696573502969-2QubZeFaJU.png?width=800)
また、複数条件の処理ではSwitchの方が若干速い傾向にあります。
ダミーデータ1000個を用意してPDF・PNG・その他のファイル分類をしてみましたが、Switchの方が処理時間が短い結果となりました。今回の検証では誤差レベルの差ですが、マシンスペックやファイルの容量によっては大きな差が出てくるのかもしれません(左:Ifアクション、右:Switchアクション)。
![](https://assets.st-note.com/img/1696573811301-8odzT5QTu9.jpg?width=800)
いかがだったでしょうか? 条件分岐が入ってくると、一気にプログラミング感が出てきますよね。
RPAはノーコード/ローコードと言われますが、本格的に組もうとするならば、ある程度システムについての知識がないと挫折してしまうかもしれません。
会社で導入してみたいけど一人では厳しそう……、触ってみたけど難しくてやめてしまった……。そんな方はぜひお気軽にご相談ください!
システム部 田中
この記事が気に入ったらサポートをしてみませんか?