【Blue Prism】スクリーンショットの取得方法

# はじめに
Blue Prismのプロセスを実行しているとき、ランタイムリソースでどのような挙動をしているか気になることがあるかと思います。今回は、そんなときのためにスクリーンショットを撮ってくれるツールをご紹介します。

# オブジェクトをインポートする
### 使用するオブジェクト
今回は **Screen Capture Tool** というオブジェクトを使用します。

### ダウンロードする
Screen Capture ToolはBlue Prismの標準のVBOではないので、ファイルのダウンロードをする必要があります。
[Digital Exchange](https://digitalexchange.blueprism.com/dx/search?_ga=2.97265503.1367863040.1653835690-362702863.1627275472&_gl=1*1s1s20*_ga*MzYyNzAyODYzLjE2MjcyNzU0NzI.*_ga_MFBQ2KFZ1L*MTY1Mzg5OTI3Ny4xNzYuMC4xNjUzODk5Mjc3LjA.) からXMLファイルをダウンロードします。通常、オブジェクトはXMLファイルで提供されています。そこでScreen Capture Toolを検索して、ダウンロードします。
![スクリーンショット 2022-05-27 171056.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/c196e208-8be6-dbcb-7fd8-e2edfde3b6f7.png)

ページ右上の緑色のダウンロードボタンをクリックします。
**BPA+Object+-+DWF+Utility+-+Screenshot.xml** というファイルがダウンロードできたと思います。

### インポートする
ダウンロードしたオブジェクトをBlue Prismにインポートしていきます。

Blue Prismにサインインして、トップ画面の左上から **ファイル > インポート > プロセス/オブジェクト** を選択します。
![スクリーンショット 2022-05-27 173952.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/7ff92d0b-c1cf-d56d-8994-a86fc69e8c00.png)

入力ファイル欄に、先ほどダウンロードしたXMLファイルが置かれているパスを指定します。
![スクリーンショット 2022-04-25 125727.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/c56a7264-e791-f623-fcb7-e41cbca68db9.png)
「次へ」を押すとプロセスの概要画面が出ますが、ここも「次へ」を押します。
ダウンロード完了画面が出てくるので、「終了」を押します。

これでオブジェクトのインポートが終わりました。
スタジオの「オブジェクト」からインポートされていることが確認できます。
![スクリーンショット 2022-05-27 175822.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/f63c9ce5-557a-d90d-565a-583b32c45396.png)

それでは、このオブジェクトを実際に使ってみましょう。

# オブジェクトの説明
オブジェクトは、このような感じで非常にシンプルです。
![スクリーンショット 2022-04-25 132659.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/25a69503-4bc5-f3ff-98ae-60bac95fe5a6.png)


入力と出力のパラメータを見てみましょう。
||  パラメータ  |  データ型  |  説明  |
| ---- | ---- | ---- | ---- |
|  入力  |  SavePath  |  テキスト  |  スクリーンショットが保存されるフォルダのパス  |
|  入力  |  Name Prefix  |  テキスト  |  ファイル名の先頭につける文字列  |
|  出力  |  Success  |  フラグ  |  スクリーンショットが成功したかどうかの判定  |
|  出力  |  filename  |  テキスト  |  保存されたスクリーンショットのファイル名<br>（{Prefix}_yyyyMMdd_HHmmss.png のような名前で保存されます）  |
|  出力  |  errorMsg  |  テキスト  |  スクリーンショットが失敗したときのエラーメッセージ  |

# スクリーンショットを取得する
Screen Capture Toolを使って、実際にスクリーンショットを取得してみましょう。

Yahoo乗り換えから交通費検索の作業を自動化することを想定しています。検索内容の入力時に発生するエラーの画面をスクリーンショットに撮っていきます。

今回実装したプロセスはこちらです。
![スクリーンショット 2022-05-29 125601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/3f33079d-d924-52f3-ce74-3063cec0ff51.png)

交通費検索ページで出発駅と到着駅を入力するオブジェクトを呼び出しています。

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/da5213ea-ef5a-2654-c60e-0219f9c2e790.png)


一連の処理では、検索欄に駅名を入力して検索ボタンを押しても未入力扱いになってしまい、検索結果画面に遷移しない事象が発生します。オブジェクトで発生した例外は、プロセスのメインページの復元ステージまでバブルアップされ、スクリーンショットのオブジェクトを呼び出すようになっています。取得したスクリーンショットはデスクトップ上の「テスト_画面キャプチャ」フォルダに保存されるようにしています。

ここで挙げている、Yahoo乗換の検索で未入力扱いになってしまう事象の詳細や解決策などはこちらの記事に書いてあるので、あわせて読んでみてください。
→[【Blue Prism】書き込みステージが使えないときの対処法](https://qiita.com/ta-hashimoto/items/97a2ff79422c8bb4e267)

プロセスを実行すると、以下のようなスクリーンショットが取得できました。
![テスト_20220530_170436.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/d15b6ffe-9ad5-297e-7daf-70c9b02b6803.png)


フォルダを見ると、スクリーンショットが保存されていることが確認できます。
![スクリーンショット 2022-05-30 171915.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/271580a3-bba9-8753-61e0-48af0fd461f0.png)

# メールに添付して送信する
実際の運用を想定した場合、取得したスクリーンショットをメールに添付して送ることになると思います。そこで、フォルダ内に保存されているスクリーンショットをメールに添付して送ってみましょう。

今回、メールの送信には **Email - POP3/SMTP** というオブジェクトを使います（メール送信プロセスについての詳しい説明は、ここでは省略します）。これはBlue Prismの標準VBOで、こちらのフォルダに入っているかと思います：`C:\Program Files\Blue Prism Limited\Blue Prism Automate\VBO`

プロセスは以下のように実装しました。メール送信ページ内のアクションで、必要な情報（送信元のアドレス、宛先、件名、本文など）をセットしています。
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/ea25df55-0f27-fbac-c166-415f76559a35.png)
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/67bd3c3f-d0d6-eef2-d4b6-dd6b1b577c1c.png)
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/60604185-8f79-6f85-f7fd-12fafc641123.png)

保存してあるスクリーンショットは、Attachment（コレクション型）に入れる必要があります。今回は「スクリーンショット」という名前のコレクションを作っています。
スクリーンショットコレクションのプロパティを見ると、Pathというテキスト型のフィールドに対して、初期値としてスクリーンショットのファイルパスを設定しています。
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/d28c69dd-c26b-5a3e-e787-73b108908f79.png)

このプロセスを動かしてみると、スクリーンショットが添付されたメールが届きます。
![スクリーンショット 2022-05-30 171204.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524963/d12317a4-4a44-de8b-05d3-a9a4adca6563.png)

# まとめ
この記事では、スクリーンショットの取得方法をご紹介しました。**Screen Capture Tool** というオブジェクトを使うと手軽にスクリーンショットを撮ることができます。ぜひ試してみてください。