「フロー」アクションを使いこなす

Power Automate Desktop
「フロー」アクションを使いこなす

RPAでは一般に自動化を実行するソフトウェアロボットのことシナリオと呼んでいます。Power Automate Desktopではそれをフローと呼んでおり、そのフローを制御するためのアクションや他のフローを呼び出すためのアクションがいくつか用意されています。このページではそれらの動きをひとつひとつ動作を見ながら確認していきましょう。

(なお、2022/7/27執筆時点でのアクション数であり、今後、利用できるオプションが増える可能性があります。)

1. End

Endアクション

Endアクションは単体で使うことはありません。実際にアクションを追加してみるとわかるのですが、エラーとなり「endステートメントに対応するステートメントが見つかりません。」というメッセージが表示されます。使う時は下図のようにifアクションやswitchアクション、後述するエラー処理などと一緒に使われます。実際はifアクションなどを追加すると自動でEndアクションも追加されるので、Endアクションを使おうと思って使う人は少ないでしょう。

Endアクション使用例

2. Wait

Waitアクション

Waitアクションの動きを見てみましょう。このアクションはRPAの実行を指定の秒数の間、一時停止することができます。設定画面では期間というパラメータで停めたい秒数を入力してください。実行した時にWaitアクションの箇所で2秒停まっていれば成功です。

Waitアクション設定画面

3. コメント

コメントアクション

コメントアクションはRPAを実行しても無視されるアクションです。無視されるのに何に使うの?と思われる方もいるかもしれませんが、無視されるからこそ使い勝手も良かったりします。例えば、実際にRPAを作るとなった時、コメントを残しておけば他の人はそのコメントからどんな機能か推測できるでしょうし、後任に効果的に引き継ぐことも可能です。コメントはRPAそのものに有用というよりは私たち開発者にとって有用なツールです。設定画面では残したいコメントを入力してあげましょう。実行しても特に何も起こらなければ成功です。

コメントアクション設定画面

4. サブフローの実行

サブフロー作成できる場所

Power Automate Desktopではデザイナー画面を最初に開いた時にできるMainフローとは別にサブフローを作成することもできます。作成はフロー画面左上にある「サブフロー」と書いてあるところから作成できます。Mainフローとサブフローは上下関係にあり、Mainフローからサブフローを呼び出すことができます。Mainフローの構成が長くなり、フロー全体を機能ごとに分割したくなった時などに有効です。

サブフローが作られると、今までMainと書いていたタブの右側に新しくサブフロータグができます。ここを開くと、サブフロー用のフロー画面が開かれ、Mainフローと同じように編集できます。今回はメッセージアクションを追加しています。

サブフローの内容

Mainフローに戻って「サブフローの実行」アクションを追加してみましょう。

メインフローでの呼び出し方

設定画面ではどのサブフローを実行するか選択できます。今回は1つしか作成していないので、先ほど作成したフローを選択しましょう。

サブフロー設定画面

実行すると、まずはMainフローから実行されますが、「サブフローの実行アクション」でサブフローが実行されます。下記のようにサブフロー下のメッセージが表示されていれば成功です。

実行結果

5. サブフローの終了

サブフローの終了

このアクションを追加すると、サブフローを強制的に終了させて、MainフローにRPAを戻すことができます。特に設定もなく、アクションを追加するとそのまま実行することができます。下図のようにサブフローの終了アクションの後にメッセージを表示するアクションを追加して、サブフローを呼び出してみましょう。

「おやすみなさい」というメッセージは表示されましたか。うまくいけば表示されていないはずです。「こんばんは」のメッセージで動作が終了していれば成功です。Ifアクションなどと組み合わせて、条件によってサブフローを終了させるような使い方をするのが良いでしょう。

なお、このアクションはサブフローの中でしか使うことができず、Mainフローに追加するとエラーになります。

サブフローの終了フロー例

6. フローを停止する

フローを停止

フローを停止するアクションでは実行しているフローを停めることができます。停止させる方法は「成功した場合」と、「エラーが発生した場合」の2通りの停め方をすることができます。

フローを停止設定画面

例えば、上記のようにエラーを発生させる方法でフローを停止させるとします。実際に実行してみると下図のようにエラーになった時と同じようにエラーメッセージを表示させることができます。メッセージ内容に関しては自由に設定することができます。

フローを停止アクションでエラー出力

7. ブロック エラー発生時

例外処理フロー

「ブロック エラー発生時」の動きを確認していきましょう。このアクションでは例外処理を行うことができます。プログラミングを触ったことがある人なら馴染み深い言葉ですが、例外処理を簡単に説明すると、思っていない動作をした時、特に何も処理していないとプログラムがダウン(よく落ちるとか言います)してしまうのですが、そうならないように予め違う処理をインプットしておくことを言います。例えば、上図の場合、CSVファイルを読み取る動作をしていますが、例えばCSVファイルが指定したパスに存在しない場合、エラーで動作が終了してしまいます。実際、今回指定したパスにファイルは存在しません。そういった時にあらかじめ他の動作を示すことで動作の異常終了を回避することができるのがこのアクションとなります。

アクションを追加すると下記のような設定画面が現われます。名前については例外を見分けるためにのみ使用するのでどんな名前でも構いません。一般的には処理したいエラーに関する名前を付けることが多いです。次に「フロー実行を続行する」と「スローエラー」の2つを選択することができます。「スローエラー」の場合、errorをthrowするという言葉の通りですが、ここではエラーを処理しません。後程具体的なスローエラーの使い方は説明しますが、ここは「フロー実行を続行する」を選択しましょう。「フロー実行を続行する」を選ぶと例外処理モードを新しく選択でき、ここで処理の内容を設定できます。都度、行いたい処理内容を考え、選択しましょう。

例外処理設定画面

次に「予期しないロジック エラーを取得」について説明しましょう。例えば上図のように予期しないロジックについては取得しないようにして設定した場合、下記のフローにおいては例外処理を行えず、エラーが発生し動作が終了してしまいます。というのも、下図のフローでは3つの要素を持った変数リストに対してそれ以上の回数をループして1を足そうとしたため、エラーを起こしてしまいました。このようにフロー内でのロジックに関するエラーも取込みたい場合は「予期しないロジック エラーを取得」をONにする必要があります。他にも、テキスト値に数字を足そうとした場合や数字を0で割ろうとした場合などが対象になります。

例外処理フロー2

最後に「スローエラー」の使い方について見ていきましょう。「スローエラー」を先ほどは何も処理をしないという風に話をしましたが、厳密には違います。実際はエラー処理を親の処理内容に任せるといのが正しい言い方になります。多分、よくわからない方も多いと思うので、事例を通して確認していきましょう。

まず、下図のようにMainフローとサブフローを用意します。Mainフローでは例外処理内容を「次のアクションに移動(exception)」するように設定しています。一方、サブフローでは例外処理内容を決めずに「スローエラー(exception_child)」をしています。CSVファイルは指定したパスには存在しません。この条件で実行した場合、もし「スローエラー」を何も処理をしないという考えでいると、CSVファイルは「スローエラー」になっているブロックの中で実行しているはずなので、動作は異常終了するはずです。しかし、実際はそんなことにはなりません。なぜなら、サブフロー全体がエラー処理の記述されているブロックの中で実行されており、サブフローでエラーをキャッチしたアクションはエラー処理内容が規定されている親ブロックにエラーをそのまま渡して処理させているからです。今まで「スローエラー」でエラーが発生したのは、エラー処理すべき親ブロックがなかったからですね。であれば、エラー処理を一回一回書いても良いんじゃないかと思われるかもしれませんが、プログラムが大きくなった時に、エラーを書いた場所を全て覚えていることはとても大変です。変更があった時に修正漏れがあったらそれこそ落ちてしまいます。「スローエラー」を効果的に利用して、同じエラー処理は一度の変更で済むようにすると、フローの保守性が格段に向上し、修正のしやすいプログラムを作ることができます。

例外処理メインフロー 例外処理サブフロー

8. ラベルと移動先

ラベルアクションフロー

ラベルアクションと移動先アクションはセットで扱います。移動先アクションでラベルを指定するとラベルのある場所までフローを飛ばすことができます。例えば上図のフローの場合は1行目の後、3行目までフローが飛ばされるので、「hello」というメッセージは表示されず、「こんにちは」というメッセージだけ表示されます。他にもIfアクションなどと一緒に条件に応じていくつかの命令をスキップさせるなどの使い方ができるでしょう。

設定画面も簡単で、移動先アクションでは移動したいラベルの名前を選択します。

移動先アクション設定画面

ラベルアクションでは任意のラベル名を付ければ設定は完了です。

ラベルアクション設定画面

9. 最後のエラーを取得

最後のエラーを取得フロー

最後のエラーを取得アクションでは例外処理の中で最後に発生したエラーを取得することができます。複数のエラーが発生していた場合は最後のものに上書きされていきます。設定画面では、エラー内容を格納する変数名とエラーを取得した後にエラーを消去するかどうかを決めることができます。エラーを消去がOFFのままだと同じアクションを同じ変数名で使い回したときなどに2回目のアクション実行時にエラーが発生しなかったとしても1回目で発生したエラーを取得してしまいます。ただし、実際に2回目のアクションを追加するときは新しく変数を作り直すことの方が多いと思うのでデフォルトのOFFのままで問題ないと思われます。

最後のエラーを取得設定画面

取得した変数をクリックすると、下図のようにエラー内容を確認できます。変数は画面右側にあるフロー変数というところから確認できます。

エラー画面表示

10. Desktop フローを実行

デスクトップフローを実行

最後に「Desktop フローの実行」の動きを確認していきましょう。このアクションを利用すると、既に作ってきた別のフローを実行することができます。設定画面もシンプルで、実行したいフローを選択したら終了です。

デスクトップフローを実行設定画面

今回、実行する「Sample2」フローは「こんにちは」というメッセージだけを表示する簡単なプログラムです。

デスクトップフロー呼び出し元

それでは、元のフローで実行してみましょう。正しく実行できていれば、下図のように「こんにちは」というメッセージが表示されます。

実行結果

以上、フローの操作に関するアクションの解説でした。良く利用するアクションばかりだと思うので、ぜひご自身でも色々動きを試して見てください。

→「Power Automate Desktop」の他の操作も見る

執筆者プロフィール

プロフィール画像

伊藤 丈裕

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

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