【PAD】エラー発生時を使いこなして作成したRPAの品質を高めよう

**今回の記事のテーマ**
アクションのパラメータ設定ウィンドウの左下にいるこれ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/f359603d-44aa-b9fb-3809-b631cf69eeb0.png)
この「エラー発生時」、すなわちIT用語でいう**例外処理**を追加するとRPAができる自動化作業の範囲を少しずつ広げていける可能性があります。
本記事では例外処理以外にも例外処理に関係するアクションについても言及していきます。

# <font color="green">✔ 例外処理の優先順位</font>
**アクションレベルでの例外処理→ブロックレベル**(下位→上位の順)で例外処理は実行されます。
![アクションレベルでの例外処理→ブロックレベル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/25b47dc2-8c2a-1630-0495-c486acfdaaab.png)


また例外処理は複数のルールを実行することができますが、その場合は上から下へ順番通りに実行されます。
【例】
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/f1af703e-7863-cd45-0394-0d534112f604.png)


# <font color="green">1⃣ 個々のアクションレベルでの例外処理</font>
## ⓪例外処理の追加の仕方
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/c9d35ece-2893-6b6f-9e12-86df0bc346dc.png)
 任意のアクションをクリックしてパラメータ設定画面を開き左下の<font color="blue">「エラー発生時」</font>をクリックします。

:::note warn
「サブフローの実行」アクション等、「エラー発生時」ボタンが存在しないアクションもあります。
:::

例外処理の種類には以下があります。
- アクションの再試行
- スローエラー
- フロー実行を続行する
- 新しいルールを追加する

## ①アクションを再試行する
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/9dccff03-86f6-78eb-afec-2585970214be.png)
- 再試行の回数/時間間隔は設定が可能

## ②エラーが発生したら実行する、アクションを含むルール
|  | 概要 |
| --- | --- |
| **全てのエラー** |エラーの内容に関わらず適用される。
| **詳細** | ✅エラーの種別ごとに実行される例外処理を指定できる。(「詳細」で表示される例外の内容はアクションごとに異なります。  【例】「画面を待機」系アクションでは「画面が見つからなかった場合」が表示される。) |


### ⑴スローエラー
- 例外処理のデフォルトの処理で、**エラー発生時は処理を中断します。**

### ⑵フロー実行を続行する
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/8853bc2b-a466-831e-5811-44103262c253.png)
- 「次のアクションに移動」「アクションの繰り返し」「ラベルに移動」のいずれかを実行させます。
:::note info
「ラベルに移動」を選択した場合は**同一フロー内で予め作成しておいたラベル以下のアクションを実行します。**
:::

### ⑶ 「新しいルール」(複数作成可能)
「全てのエラー」、「詳細」いずれの場合でも「**新しいルール**」から1つ以上のルールを作成・実行させることが可能です。

 1つの「ルール」は「**変数の設定**」、もしくは予め作成した子フローを実行する「**サブフローの実行**」から成り立ちます。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/63d4e857-58ae-adf5-6bec-df46c173beac.png)

::: note info  
複数のルールを適用した場合、実行順序は上から下へ順番通りに実行されるので「**フローを停止する」アクションを含むものは最後のルールとして設定する**こと。
:::

#### 全てクリア
「全てクリア」を選択すると追加済みの「ルール」が全てクリアされ、「スローエラー」に戻されます。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/0d723f97-7682-403a-c1f9-10f0df14bebd.png)

# <font color="green">✔ 例外処理が追加されたアクションの確認</font>
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/ee8953f1-a352-f717-08b8-a5243a3375e2.png) 
上図のように例外処理が追加されたアクションの左横には<font color="blue">青い盾マーク</font>が追加されています。

更にこのマークの上にカーソルを当てると、例外処理がどのような順番で実行されるか表示されます。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/d87bc490-c584-a855-4641-d76e4274c528.png)

:::note info
また、既に例外処理を追加したアクションの例外処理を編集する場合はこの<font color="blue">青い盾マーク</font>をクリックすると直接そのアクションの例外処理設定ウィンドウを開くことができます。
:::

# <font color="green">2⃣ ブロックレベルでの例外処理</font>
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/4dd01f67-0d02-117f-d27e-b691c8c53a41.png)

- 「ブロックエラー発生時」と「End」で挟まれたアクション全てに適用されます。
- デフォルトは「スローエラー」、その他は「フロー実行を続行する」かフロー作成者によって作成された「ルール」が実行されます。
    - 「フロー実行を続行する」で選択できるルールは「次のアクションに移動」「アクションの繰り返し」「ラベルに移動」に加えて「**ブロックの先頭に/末尾に移動する」を実行**できる。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/aa595bc8-aa8f-384b-69a9-5ed4afd335ae.png)

:::note info
なお「フロー実行を続行する」の例外処理モードで選択した動作は、「新しいルール」が追加されていた場合そのルールを実行した後に実行されます。
:::

# <font color="green">✔ アクション「最後のエラーを取得」</font>
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/cc79a72c-008c-300c-dfd4-f006e59b87e4.png)

エラーの具体的な内容をテキストとして取得できるアクション。
作成したRPAで発生したエラーをExcelに書き込んでいく場合などに便利です。
【参考】[Excelに書き出し](https://sunagitsune.com/powerautomatedesktoperror/#toc15)

# <font color="green">✔ アクション「フローを停止する」</font>
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/71ddf5ef-e574-3ab3-d63e-5fce12274380.png)
サブフロー内のアクションで「フローを停止する」アクションを配置する場合、そのパラメータ「フローの終了」には「成功」の他に「**エラーメッセージの表示**」が存在します。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/44d96efb-17e4-8cf8-721c-11aa434cb243.png)

---
# 参考

https://blog-tips.sekenkodqx.jp/2021/06/09/power-automate-desktop-exception-catch/

 👇とりあえず例外処理の追加をしてみたい場合の演習におすすめ👇

 https://docs.microsoft.com/ja-jp/learn/modules/pad-exception-handling/