こんにちは。RPA事業部です。
今回は、EzRobotというRPAソフトを使用して、小規模な作業を自動化した方法を紹介したいと思います。
EzRobotは、シンプルで直感的な操作でロボットを作成できるため、プログラミング未経験者にもお勧めです。
タイトルにもあるように、今回は拡張機能のスクリプト実行を使用して、正規表現で任意の文字列の抽出する方法を紹介します。
EzRobotには、正規表現を使用して文字列を置換したり、判定したりする機能がありますが、抽出する機能はありません。
そこで、PowerShellを使用して正規表現で文字列を抽出するスクリプトを作成してみました。
このコラムでは、WebサイトのHTMLソースからメールアドレスを取得するための業務を想定し、ロボットとスクリプトファイルの内容を紹介します。
ロボットの概要
まずは、ロボットの概要から紹介します。
自動化内容
「迷惑メールチェッカー」のWebサイトからHTMLソースを取得し、正規表現でメールアドレスを抽出して、Excelファイルに出力する作業を自動化しました。下
フォルダ構成
以下は、フォルダの構成です。
ロボットファイル、PowerShellのスクリプトファイル、そして出力先のExcelファイルを用意しました。
.
┗メールアドレス取得ロボ.ezr
┗出力先.xlsx
┗ExecuteMatchesText.ps1
作業フロー
作業フローは以下の通りです。
①Webサイトを開き、HTMLソースを取得
②HTMLソースからメールアドレスを取得
③Excelファイルを開き、取得したメールアドレスを出力
処理内容の紹介
次に、上記の作業フローをもとに作成したロボットの処理内容について紹介します。
処理内容の一覧
ロボットの内容は以下の通りです。
変数は以下の画像のようになります。
作業番号1~3
作業フローの「①」を自動化した箇所です。
Webブラウザを起動して指定したページを開き、HTMLソースを取得し、変数の「html」に格納しています。
作業番号4
こちらは、作業フローの「②」を自動化した箇所です。
以下のPowerShellスクリプトを使用しています。
$regex_mail = '<a href="\.\/search\?mail_1=[\w-].+[\w-]@[a-z]{1,}\..+[a-z]">'
$regex_del = '<a href="\.\/search\?mail_1=|">'
# 一致文字列抽出
$mails = [RegEx]::Matches($var_html, $regex_mail)
# クリップボード初期化
Set-Clipboard
if ($mails.Count -eq 0) {
Set-Clipboard "None"
} else {
foreach ($mail in $mails.Value) {
# 不要文字列置換
$mail = [regex]::Replace($mail, $regex_del, '')
# クリップボードへ追加
Set-Clipboard -Append $mail
}
}
今回は、aタグのhref属性からメールアドレスを取得する方針で、正規表現を作成しました。HTMLのソースを見てみると、「<a href=”./search?mail_1=メールアドレス”>」を正規表現で表現することで、取得できそうでした。
先頭の「<a href=”./search?mail_1=」と末尾の「”>」は固定で、取得したいメールアドレス(ユーザー名@ドメイン名)は変化するので、こちらを表す正規表現を作成しました。先頭と末尾の固定箇所の正規表現記号をエスケープすることで、今回使用した正規表現は1行目の内容になります。
また、2行目の正規表現は不要な先頭と末尾の固定箇所の文字列を空白へ置換するために用意しました。
5行目では、HTMLソース内からメールアドレスを取得するために作成した正規表現にマッチする文字列を抽出しています。
※EzRobotの変数はスクリプト内で”$var_変数名”と指定でき、編集・操作が可能で、「var_html」とすることで、EzRobotで取得したHTMLソースを利用しています。
10行目以降の処理に関して、マッチする文字列がない場合は「None」を返し、ある場合は、メールアドレスを各々クリップボードに格納します。
作業番号5~11
作業フローの「③」を自動化した箇所です。
クリップボードへ格納されたテキストは、エクセルファイルに出力して保存しています。
出力結果
出力結果は、以下の画像の通りです。
全て表示されていませんが、約10秒で120件のメールアドレスを取得できました。
さいごに
いかがでしたでしょうか。
今回のように一定規則の文字列を抽出したい場合は、比較的多くの作業で発生するのではないでしょうか。
そのような時は、今回のように正規表現などを使用することで、解決できる場合もあるかと思いますので、もしよければ試してみてください。
また、EzRobotには他にも多くの拡張機能がありますので、気になる方はぜひご連絡ください。