UiPathではじめるRPA入門(5)〜 アプリケーション自動化編
こちらの記事では、アプリケーションとの連携について学習します。アプリケーションとは、例えばエクセル、ワード、PDF、E-mail、インターネットブラウザなどです。UIからの操作を記録させる方法でもできますので、効率の良い方法を見つけてください。
Contents
今回の内容
エクセル書類からのデータの読み取りと書き込み
- 読み込み、書き込み
- 繰り返し
ブラウザを用いた自動化とデータの読み取り
- 自動検索、結果表示
ワード書類の読み取りと書き込み(文字列置換)
- 書類の読み込み、検索、書き込み
PDFからのデータ読み取り
- 請求書データの読み取り
Eメールの送受信
- Eメールの設定
- Eメールの受信
- 正規表現によるEメールの解釈
- Eメールの送信
エクセルの自動化
セットアップ
まず、UiPathからExcelを直接呼び出せるようにするための設定を行います。
アクティビティパネル > Manage Packages からPackage Managerを起動します。
Package managerから、UiPath.Excel.Activities をインストールします。
テスト用ファイル
交通費精算シートを使用してください
エクセル関連のアクティビティ
エクセルパッケージをインストールできたらエクセル関連のアクティビティが選択できるようになります。
ワークブックを開く
三点リーダ「…」をクリックして、開くべきワークブックを選択します
セル B3 を読み込み Message Box で表示する
Read Cellアクティビティで、指定のシートの指定のセルを読み取る設定をします。
読み取った内容を Message Box で表示します。
エクセルの自動化 〜 繰り返し
繰り返しの方針
繰り返しの方針は2つあります。
- ロボット側で読み取るセルを一つずつずらす
- エクセルを読み込む時に配列で読み込みFor Eachで処理
効率が良いのは、2番目の For Each を利用した方ですが、一つずつずらして読み取るというのも十分に使える方法です。
ブラウザの自動化
Web レコーディング
Recording > Web を選択します。
目的のサイトを開いた状態で、Open Browser でブラウザを開く指定をします。(Start Appと同じ要領です)
例えば、kakaku.com を開くとURLの確認がでるので、確認しOKをクリックします。
あとは、自動レコーディングでやってみてください。
データスクレイピング
データの取得
データを取得する際は、Copy Text でもできますが、表のようなデータををまとめて取得することができます。
例えば、下のようなデータがあった場合、Copy > Scrape Data で 表形式でのデータを取得することができます。
Scrape Dataを選択します。
すると、スクレイプするデータの位置を選択するようなプロンプトが表示されますので、欲しいデータがある部分をブラウザ上で選択します。
すると、自動的にデータを取得してフォーマットしてくれます。
データの書き込み
次に取得したデータをエクセルに書き込んでみましょう。
まずは、スクレイプしたデータがどこに格納されているのかをプロパティパネルから確認しましょう。
ここで、取得したデータは、自動的に生成されたExtractDataTableに入っているとわかります。
ExtractDataTableをCSVとして保存してみます。
Write CSV アクティビティを使って、ファイル名を指定します。
ロボットを実行後、ファイルが保存されていることを確認します。
ファイルを開くと、取得したデータがCSVになって保存されたことが確認できました。
さて、次は、ワードの自動化です。
ワードの自動化
セットアップ
ワードにアクセスするために、エクセルと同様ワード用のパッケージをインストールします。
アクティビティパネル > Manage Packages からPackage Managerを起動します。
Package managerから、UiPath.Word.Activities をインストールします。
テスト用ファイル
ワード関連のアクティビティ
ワードパッケージをインストールできたらワード関連のアクティビティが選択できるようになります。
テキストを入れ替える
例えば以下のような、ワード書類テンプレートがあったとした際に文字列を入れ替えてみましょう。テンプレートでは、[[Trihikisaki]]と実際にはありえなそうな記号で囲っているのが工夫のポイントになっています。
Replace Text アクティビティ
ワード書類の文字列を置換するアクティビティです。
プロパティ
検索文字列と置換文字列があるだけのシンプルなものです。
アクティビティ
プロパティを開かずとも、アクティビティの中で設定することもできます。左側に検索する文字、右側に置き換える文字を入力します。どちらも変数を使用しても大丈夫です。
実際のフローチャート
実際に置き換える処理は以下のようになります。
- まず、ワードファイルを開きます
- その中で、[[date]]を日付の文字列が入った変数で置換します
- 次に、[[Trihikisaki]]に顧客名が入るように置換しています
- 最後に、[[qnum]]に伝票番号が入るように置換しています。
実際に実行してみて置換されることを確認してください。
PDFからのデータ読み取り
セットアップ
アクティビティパネル > Manage Packages からPackage Managerを起動します。
Package managerから、UiPath.PDF.Activities をインストールします。
テスト用ファイル
2017qsampleをご使用ください。
PDF関連のアクティビティ
PDFパッケージをインストールできたらPDF関連のアクティビティが選択できるようになります。
OCRの種類と補足
使えるOCRの種類は、GoogleとMicrosoftのものです。
- Google は、白背景で良い結果を出すので、白抜きの場合 Inverse オプションで精度が向上します
- Microsoft は、日本語にも対応しており、活字読み取りには使えますが、読み取り画像の倍率 Scale で調整が必要な場合があります
テキストデータを読み取る
Read PDF Text アクティビティを用います。読み取るPDFファイルを指定してください。
読み取ったデータ
プロパティパネルより、読み取ったデータを変数に格納します。
ここでは、result という変数に格納しています。
請求金額だけ読み取る
所定の場所だけを読み取りたい場合、正規表現と呼ばれる方法を用いるのが最も正確です。
正規表現の詳細は、ここでは立ち入りませんが、以下の方法で請求金額だけを読み取ることができます。
Matches アクティビティ
プレゼンテーションレイヤーでの操作がないためアクティビティは簡素です。
Matches プロパティ
Inputに検索対象の変数、Patternに検索パターンを入力します。
Patternには、「正規表現」を使います。この場合は、”\nご請求金額(.+)円[\r\n]”とします。
マッチしたパターンの返却は、IEnumerable
マッチしたパターンの返却は、Matchオブジェクトを格納した、IEnumerableです。単純にこの中身を取り出すには、一つしかマッチしなくても、For Each を使い、itemのクラスは、Matchオブジェクトを指定します。もしくは、一番はじめのものだけを取り出します。
ここでは、For Eachを使ってみましょう。
For Each の中身
マッチした中身を取り出して、Message Box に表示させてみます。
Matchクラスについては、以下のURLを参照してください。
Eメールの自動化
セットアップ
まずは、Email用のパッケージをインストールします。
アクティビティパネル > Manage Packages からPackage Managerを起動します。
Package managerから、UiPath.Mail.Activities をインストールします。
Eメール関連のアクティビティ(一部)
メール関連のアクティビティは、ほぼメールクライアントと同じ動作をします。
*メール送受信はUIの自動化でも可能です
ここでは、SMTPでのメールの送信を試してみます。
SMTPサーバーでセキュリティ設定がされているときに、この方法でうまくいかないときがありますので予めご承知ください。
Send SMTP Mail アクティビティ
SMTPでメールを送信するためのアクティビティです。
送信先、件名、本文からファイルの添付もここで指定できます。メーラーでできることはほぼ全てカバーしているのでそれらは、プロパティから設定できます。
必須のプロパティ
メールで送信するため、SMTPサーバーの
Port:SMTPサーバーのポート
Server:SMTPサーバーのホスト
Email:送信者ID(Eメール)
Password:SMTPパスワード
の設定が必須です。
Eメールの受信
Get IMAP messages
IMAPでメールを取得するアクティビティです。
送信と同様に、ポート、ホスト、ログイン情報が必須となります。
List
取得したデータは、MailMessageオブジェクトを要素に持つListオブジェクトとなります。
MailMessageクラスについては、以下のリンクを参照してください。
URL: https://msdn.microsoft.com/ja-jp/library/system.net.mail.mailmessage(v=vs.110).aspx
そのほかの細かいテクニック
右クリック➡コンテクストメニュー
右クリックは、手動レコーディングです。
手動で右クリックをレコーディングしたあと、自動レコーディングにしF2で3秒間のレコーディングを中断を挟みその間にコンテクストメニューを表示します。
3秒の中断が終わると再び自動レコーディングが始まります。その最中にコンテクストメニューの操作を行います。
ドラッグ&ドロップ
レコーディングの左クリックを用いてアクティビティを登録します。
クリックアクティビティには、次のプロパティがあります
ドラッグ&ドロップは、CLICK_DOWN➡Hover ➡CLICK_UP でエミュレート可能です。
Silverlightの自動化
Silverlight Extensionをインストールします。管理者権限が必要になります。
前提として、silverlight_developer_x64.exe がインストールされている必要があります。すでに、別のSilverlightがインストールされている場合は、アンインストールしてからdeveloper runtimeをインストールしてください。
Silverlight developer runtimeの参考ダウンロードリンク:
https://www.microsoft.com/ja-jp/download/details.aspx?id=29715
Javaの自動化
Java Extensionをインストールします。管理者権限が必要になります。
AWT、SwingなどのGUIフレームワークを用いている場合、GUI要素のオブジェクトを取得できるようになります。
復習
今回は、アプリケーションの自動化について学習しました。
- エクセル書類からのデータの読み取りと書き込み方法を説明してください
- ブラザを用いた自動化とデータの読み取りは、どのようにしますか
- ワード書類の文字列の置き換えはどのようにしますか
- PDFからのデータ読み取り方法には、何がありますか
- Eメールの送受信では何を設定しなければなりませんか
また機会がありましたら、掲載させていただきます。
ご意見ご要望もお待ちしております。