Power Automate

# はじめに
Microsoft社がWindows11からRPAツールのPower Automate Desktopを標準搭載されたとあり、業務上Windowsを使用している身としては、使用する確率があると思い、試してみる事にしました。

https://forest.watch.impress.co.jp/docs/news/1356822.html

# 無料で始める
Windows 10を利用の場合はPower Automate DesktopをMicrosoft Storeからダウンロードすれば無料で試すことができます。Windows 11へアップグレードされた場合は標準搭載されているのでスタート メニューから試すことができます。

https://powerautomate.microsoft.com/ja-jp/#home-signup

# ラーニング
ラーニングサイトが用意されているので手軽にスキルを身に着けることができます。

https://learn.microsoft.com/ja-jp/training/modules/build-first-desktop-flow/

# テンプレート構築
RPA開発する場合、一人開発または複数人での規模の開発があると思います。運用保守を意識してテンプレートを用意することを個人的にお薦めします。

最低限の処理の構築
・変数の命名規則
・設定ファイル読込
・エラーハンドリング（TryCatch）
・ログ出力

# 変数の命名規則
変数名は自動的に付与されますが、変数型も変数名に命名しておくと変数名だけで判断できるのでお勧めです。

 テキスト型： t#######
 数字型：　n######
 DateTime型：d#####
 DataTable型：dt#####
 DataRow型：　dr######

# 設定ファイル読込
1. 設定ファイルを用意する
![設定ファイル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/a29f077c-f161-a823-cdcf-c530f653aaca.png)
1. アクション[変数の設定]で設定ファイルのパスを指定する
![変数の設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/a9a43d1d-7677-a649-c7e2-3f66ffccf81b.png)
1. 設定ファイルCSVを読み込む
![CSVファイルから読み取る.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/f652dd8a-0fb2-957a-7eec-52d98627d3f4.png)
1. 変数dtCSVTableをアクション[For each]でループする
![Foreach.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/dcc0590f-257f-c0c2-c641-25a37ca74310.png)
1. アクション[If]で変数drCurrentItem[0]の値と項目名が同じ場合変数sLogFilePathに変数drCurrentItem[1]を設定する
![If.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/798c04ce-532e-1efb-feb6-7434ffb0d6a7.png)
![変数の設定_sLogFilePath.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/ecba5d1d-3b7a-64a1-6729-d5aef6f208aa.png)

# エラーハンドリング(TryCatch)
アクション[ブロック エラー発生時]が何らかの処理を記載するTry部分となり、その中にアクション[ラベル]を配置します。この[ラベル]がTry内でエラーが発生した場合に処理が移るCatch部分となります。
アクション[ブロック エラー発生時]内で記載するアクションには、必ずエラーが発生した場合の処理を設定しておきます。

1. アクション[ブロック エラー発生時]を配置する
![ブロック エラー発生時.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/b3943b5d-0550-8597-4d64-9d87819af869.png)
1. アクション[ブロック エラー発生時]内にアクション[ラベル]を配置する
![ラベル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/436e088f-da22-ac1a-0d04-441e3cd636a1.png)
1. アクション[ラベル]の後にアクション[最後のエラーを取得]を配置する
![最後のエラーを取得.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/2a36b9c7-cfaa-4688-0564-56e29fd03359.png)
1. アクション[ブロック エラー発生時]内に想定する処理のアクションを配置し[エラー発生時]でエラーが発生した場合の処理を設定する
4-1. [エラー発生時]を押下する
![CSVファイルから読み取る.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/85d41e27-cc71-f133-0a77-e7bf36be1c22.png)
4-2. [すべてのエラー]>[フロー実行を継続する]を押下する
4-3. [例外処理モード]を[ラベルに移動]を選択する
4-4. [ラベルの選択]をラベル名を選択し[保存]を押下する
![ウィンドウ内のボタンを押す.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/3d392d95-12c9-cec2-9311-6d577c2cd13a.png)

# ログ出力
アクション[テキストをファイルに書き込む]を使用します。
![テキストをファイルに書き込む.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/f3e390ed-7179-9546-0ad3-1fe3fe199533.png)

# テンプレート全体
![テンプレート_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/a2ffc890-c5ee-1235-2edf-044c2ddf7f86.png)
![テンプレート_2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/5efc68ce-29a3-8e0f-0c49-bdb2425797c2.png)
![テンプレート_3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/baf3763a-7201-0317-ecd5-21afa66b2880.png)
![テンプレート_4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/e4d4498f-b014-37ba-40c9-984c3d4f60da.png)
![テンプレート_5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477705/f91b21e9-f055-6c43-1345-887b956d1684.png)

# 最後に
エラー時の設定は、BizRoboと同じようにステップ毎に設定しなければならないようでした。
個人的にはPower Automateは扱いやすいRPAツールであると感じました。