「条件」アクションを使いこなす

Power Automate Desktop
「条件」アクションを使いこなす

Power Automate DesktopなどのRPAツールはプログラミング未経験者でも扱うことができます。とはいえ、パソコン上の機能なので、プログラミング的な要素をすべて排除できるかといえば、それは難しい話です。プログラムの動作には「順次」「条件分岐」「繰り返し」の3つがあります。理論上、この3つでプログラムの全ての動きを説明できると言われています。ここではそのうちの1つ条件分岐処理を行うためのアクションである「条件」について学んでいきます。

「条件」アクションは下図のように全部で6つあります。しかし、実際は「If」「Switch」が条件分岐を行うアクションそのもので、「Else」「Else if」は「If」アクションを、「Case」「Default case」は「Switch」アクションを補うものになります。ここでは、「If」「Switch」アクションを事例に、他のアクションも絡めながら見ていきたいと思います。

(こちらは2022/6/27執筆時点での情報です。今後、選択可能なオプションが増える可能性があります。)

→「ループ」アクションを学びたい方はこちら →RPAについての簡単な概要はこちら

1. 「If」を使いこなす

「If」はIfの次に続く条件文が「真」(正しい)の時は処理を行い、「偽」(正しくない)の時は処理を行わないというものです。今回は以下の事例を見ていきます。今回は1~6までの乱数を生成して、1の場合は金メダルを、2の場合は銀メダルを、3の場合は銅メダルを、その他の場合はメダルを獲得することができないというものを考えます。また、事例をみると「Else」アクションと「Else if」アクションも同時に出てきています。これら2つは「If」アクションを補完するものとして使われるので、一緒に学んでいきましょう。

If事例のフロー全体

最初の1行目で1~6までの乱数を作り、それをRandomNumberという変数に入れます。乱数とは毎回、実行する度に、別の値ができるもので、この場合は実行する度に、1、2、3、4、5、6のいずれかの値が生成されます。

2~10行目で乱数に応じて「If」アクションを実行していきます。「If」アクションをドラッグ&ドロップすると以下のような設定画面が現われます。今回は乱数を右側の{x}から選択して最初のオペランドにセットし、2番目のオペランドには1をセットしてあげましょう。演算子は「と等しい(=)」を選んでください。ちなみにオペランドとは被演算子のことを言い、計算などが行われる値のことを言います。

Ifの設定画面

保存を押すと以下のような部品が現われます。これが一番単純なif文で、RandomNumberが1の時「If」アクションが実行されます。

If部品

実際に「メッセージを表示」というアクションからメッセージを追加して、何回か実行してみると、生成した乱数が1の場合、以下のようなメッセージが表示されます。

If実行例

では、銀メダルや銅メダルも同じように表示したい場合はどうすれば良いでしょう。「If」アクションを複数追加することもできますが、これだと見栄えも悪いですし、また、今回のように数が少ない場合は良いですが、100個も1000個も場合分けをしなくてはならなくなった場合、全ての条件分岐を比較することになり、とても効率が悪いです。そういう時に使えるのが「Else if」アクションです。「Else if」アクションをドラッグ&ドロップすると、「If」アクションと同様の設定画面が表示されるので、それらを設定してメッセージを追加すると、以下のような結果がIf文の中に追加されます。Else If文は何度でも追加できるので、今回は銀メダルと銅メダルの2回分を追加しています。これで見た目もスッキリしましたし、仮にRandomNumberが1の時、2や3のElse if文とは比較しなくても良くなるので、動作も早くなります。1個や2個の条件分岐だと違いは感じないかもしれませんが、これが100個や1000個とか数が増えてくると大きな違いになってきます。

Else if事例

さて、最後にメダルを獲得できなかった場合について考えてみます。残りは4、5、6が出てくる場合で、これらをElse if文でそれぞれ条件分岐することができそうです。ただ、同じメッセージを出す予定なので、もっと簡単に、そしてスマートにできる方法はないのでしょうか。そういう時に使えるのが、「Else」アクションです。「Else」アクションをドラッグ&ドロップすると以下のようにIf文の中に追加されます。これで同じIf文内にある全ての条件に合致しなかった場合、Else文が実行されるようになります。今回で言うと、乱数が4、5、6の場合ですね。これで乱数が100とか200に増えた場合でも何らかのメッセージが出せるようになりました。

Else事例

実際にElse文の中に「メダルを獲得できませんでした」というメッセージを追加して実行してみると、以下のようなメッセージが表示されます。また、実行する度に乱数に応じて出てくるメッセージも変わってくるはずです。どうでしょう。みなさんはできたでしょうか。「If」アクションは実際に何かを作ろうと思った場合、ほとんどの場合で使うことになります。ここでしっかりと理解していきましょう。

If実行結果

2. 「Switch」を使いこなす

「Switch」アクションはSwitchに続く値を場合に応じて異なる処理を行えるようにする機能です。この異なる分岐条件は「Case」と「Default case」を使います。まずは下図の事例を見てみましょう。「If」アクションの時と同様の事例を「Switch」アクションに書き換えたもので、生成された乱数の値に応じて別々の結果が返るようにしています。

Switch事例のフロー全体

今回の事例は1行目で1~6までの乱数を生成して、2~11行目がSwitch文を実行していきます。「Switch」アクションを左側のアクションバーからドラッグ&ドロップすると以下のような設定画面が現わるので、チェックするパラメータに生成した乱数であるRandomNumberを入力してください。

Switchの設定画面

そうすると、以下のような部品ができるので、この中に「Case」と「Default case」アクションを追加していきます。

Switch部品

「Case」アクションをドラッグ&ドロップすると以下のような設定画面が現われます。演算子は色々選ぶことができますが、今回は「と等しい(=)」を選んであげましょう。比較する値を1として、できたら保存を押して確定してください。

Case設定画面

「Case」アクションの挿入がうまくいくと以下のようにCase文が「Switch」アクションの中に追加されるはずです。「Switch」アクションで設定したパラメータを「Case」アクションで設定した条件と比較していくことになります。上図だとRandomNumberが1かどうか比較します。1の場合、Case文の中身を実行し、そうでない場合は何も行われません。このCase文は何個でも追加することができるので、今回は先ほどと同様の手順で比較する値が2、3の時も追加してみましょう。結果は下図のようになります。

Case事例

これで金、銀、銅メダルを表示するための場所を作りました。後はメダルを獲得できなかった場合の場合分けですね。ここで、残り4、5、6の場合もCase文をそれぞれ追加してメッセージで「メダルを獲得できませんでした」と表示する方法も考えられますが、同じような文章を3つも作るのはちょっと手間ですね。また、まだ3つなら良いですが、これが100個とか1000個とかになった場合、とてもではないですがそれら全てにCase文を作ることはできないですし、エラーが起きるもとにもなってしまいます。こういう時に役立つのが「Default case」アクションです。これは「Case」文で分岐しなかった残り全ての場合を引き受けてくれます。

下図のように追加するだけで、RandomNumberが4、5、6の場合は「Default case」アクションを実行するようにしてくれます。仮に1~6ではなく、1~200にした場合でも、同じように1、2、3以外の場合は「Default case」アクションが実行されます。

Default case事例

ここまでできれば、後はメッセージを追加して終了です。「メッセージボックス」の「メッセージを表示する」アクションからそれぞれにメッセージを追加してあげましょう。うまくできていれば以下のようなメッセージが表示されるはずです。そして、実行される度に違うメッセージが表示されます。

Switch実行結果

以上、条件についての解説でした。「If」「Switch」アクション共にRPAを使いこなしていく上で必須のアクションになります。RPAは言われた通りのことしかできないので、例外的な処理を行いたい場合など、「If」や「Switch」アクションで分岐させていくことになります。ここで基本的なことを抑えて使いこなせるようになっていきましょう。

→他のPower Automate Desktop操作も知りたい方はこちら

執筆者プロフィール

プロフィール画像

伊藤 丈裕

(株)サムテックのシステムエンジニア。応用情報技術者資格保有。
27歳の時、営業から完全未経験で転職。開発とWebマーケティングを担当。得意言語はJavaとJavaScript。

タイトルとURLをコピーしました