【RPA入門(4)】UiPathの使い方~Excelのリストを用いて営業メールを送信

RPAの入門として、UiPathの実践的な使い方を紹介していきます。今回はExcelリストに記載された情報をもとに、営業メールを送信する処理を自動化したいと思います。

Excelのリストを用いて営業メールを送信

【Step.1】顧客リストを作成

先ずは、Excelを使用して顧客リストを作成します。

create list

項目は「企業」「担当者」「部署」「アドレス」「プラン」「送信」の6つです。プランは「トライアル」か「ベーシック」、送信は「OK」か「NG」を入力します。

送信が「OK」の場合のみメールを送信し、「NG」の場合はメールを送信しないようにします。

ファイル名は「営業メール.xlsx」、シート名は「リスト」としました。

【Step.2】メール文面を作成

次に、Excelを使用して送信するメール文面(テンプレート)を作成します。

今回の事例では、プランの種類(トライアル、ベーシック)に応じて、メール文面を変えることにします。2種類のメール文面を準備します。

■トライアルのメール文面

create template

■ベーシックのメール文面

create template2

メール冒頭部の「企業」「部署」「担当者」は、レコードごとに置き換えるために、それぞれ「%company%」「%department%」「%name%」にしておきます。

シート名はそれぞれ「トライアル」、「ベーシック」としました。

※英単語を%で囲んでおく理由は、メール文面内で同じ英単語を使用していた場合に、そこも誤って置き換えられてしまうのを防ぐためです。

【Step.3】UiPathを起動

先ずは、PCにインストールしているUiPathを起動して、空のプロジェクト(Blank)を作成します。

create project

【Step.4】Excelファイルを開く

では、Step.1で作成したExcelファイルをUiPathで読込んでみたいと思います。

open excel

画面左側のアクティビティ検索窓に「excel」と入力します。表示された「Excel Application Scope」アクティビティを、ワークフロー内にドラッグ&ドロップします。

最後に、「Excel Application Scope」アクティビティのプロパティで、対象のExcelファイル名(今回は、営業メール.xlsx)を指定します。

※「Excel Application Scope」は対象のExcelファイルを開くアクティビティです。そして、アクティビティの中に表示されるDoコンテナの中に、対象ファイルに対して実行したい処理(アクティビティ)を追加していきます。

【Step.5】リストのデータを読込む

範囲を指定してシートの中身を読込むために、「Read Range」アクティビティを、Doコンテナの中にドラッグ&ドロップします。

read range

プロパティで、シート名(Sheet Name)を「”リスト”」に、セル範囲(Range)を「””」に設定します。

通常、範囲は「”A1:C5″」などの表記で指定しますが、「””」にするとシート内の全データを自動で読み取ってくれます。読み取ったデータを保存するテーブルデータの変数名(Data Table)を、「data」と設定します。

※新規で変数を定義する際は、入力欄で「Ctrl + k」を押します。「Set Name:」と表示されるので、続けて変数名を入力してエンターキーで確定します。

最後に、オプションの「Add Headers」をチェックしておきます。これをチェックすると、シートの一行目の項目行は取得されないようになります。

これで、Excelシートに記載されたテーブルデータが変数dataに保存されます。具体的には、変数dataには下記のような二次元配列が格納されています。

data =  [
          ["株式会社A", "田中", "開発部", "a_company@co.jp", "トライアル", "OK"],
          ["株式会社B", "鈴木", "営業部", "b_company@co.jp", "トライアル", "NG"],
          ["株式会社C", "高橋", "製造部", "c_company@co.jp", "ベーシック", "OK"]
        ]

【Step.6】データを1行ずつ取り出す

変数dataに格納されたテーブルデータを1行ずつ取り出して、順次処理していくために「For Each Row」アクティビティを使用します。

画面左側のアクティビティ検索窓に「for each」と入力します。表示された「For Each Row」アクティビティを、「Read Range」アクティビティの下にドラッグ&ドロップします。

for each row

「For Each Row」のプロパティの「DataTable」に、Step.5でテーブルデータを保存しておいた変数dataを入力します。

これで、変数dataに格納されているテーブルデータから、レコード(行データ)を順次読み取って、繰り返し処理を行うことができます。順次読み取ったレコードは、変数rowに代入され、「For each Row」アクティビティのBodyコンテナ内で値を参照することができます。

今回のケースでは、レコードが3件あるため、Bodyコンテナ内の処理が3回繰り返し実行されます。処理が実行されるたびに、変数rowには[“企業”, “担当者”, “部署”, “アドレス”, “プラン”, “送信”]の一次元配列データが順に代入されています。

【Step.7】レコードの中身を確認

「For Each Row」アクティビティでは、各レコードが変数rowに代入されます。下図をみてください。

row

レコードの各項目を参照するには、「row.Item(n).ToString」と設定します。Item(n)で、レコードのn列目の項目を取得することができます。慣習的にnは0から数え始めます。

最後のToStringは、データの型を文字列に変換するメソッドです。この辺りは深く気にせずに、おまじないだと思って割り切りましょう。

【Step.8】メール送信の可否を判断

各レコードの「送信」(OK、NG)に応じて、メールを送信するかどうか判断します。

画面左側のアクティビティ検索窓に「if」と入力します。表示された「if」アクティビティを、「For Each Row」アクティビティのBodyコンテナ内にドラッグ&ドロップします。

if

「if」アクティビティのプロパティを確認します。「Condition」には任意の条件式を入力します。今回は、レコードの「送信」項目がOKであるという式を書きます。具体的には、「row.Item(5).ToString = “OK”」と入力します。

「if」アクティビティは、左側「Then」と右側「Else」に分かれています。これは、「Condition」に記載した条件式を満たす場合は、左側の「Then」に登録した処理が実行されます。条件式を満たさない場合は、右側の「Else」に登録した処理が実行されます。

今回は、OKの場合にメールを送信して、それ以外(NG)の場合は、メールを送信しないように設定します。従って、以降では条件式を満たす場合に実行される左側(Then)に、処理を登録していきます。今回の事例では右側(Else)に処理を登録する必要はありません。

【Step.9】メール文面を読込む

各レコードの「プラン」(トライアル、ベーシック)に応じたメール文面(テンプレート)を読込みます。

画面左側のアクティビティ検索窓に「excel」と入力します。表示された「Read Cell」アクティビティを、「if」アクティビティのThenコンテナ内にドラッグ&ドロップします。

read cell

「Read Cell」アクティビティのプロパティで、シート名(SheetName)を「row.Item(4).ToString」に、セル(Cell)を「”A1″」に設定します。シート名は「プラン」(トライアル、ベーシック)によって参照するシートが異なります。

読み取ったデータを保存する変数名(Result)を、「template」と設定します。

※新規で変数を定義する際は、入力欄で「Ctrl + k」を押します。「Set Name:」と表示されるので、続けて変数名を入力してエンターキーで確定します。

【Step.10】メール文面を書き換える

Step.9で読み込んだメール文面の冒頭部には、「%company%」「%department%」「%name%」の記号が埋め込まれています。

このまま送信すると都合が悪いため、各レコードの情報をもとに、これら3箇所を書き換える必要があります。

■「企業」を置換

では、先ず「%company%」を具体的な値に書き換えます。

画面左側のアクティビティ検索窓に「replace」と入力します。表示された「Replace」アクティビティを「Read Cell」の下にドラッグ&ドロップしましょう。

replace company

下表の通り、「Replace」アクティビティのプロパティを設定します。

項目 備考
DisplayName 「企業」を置換 アクティビティの表示名です。分かりやすい名前をつけておきましょう。
Input template 置換の対象となる文章です。メール文面が保存されている変数templateを設定します。
Pattern “%company%” 置換される文字です。
Replacement row.Item(0).ToString 置換する文字です。レコードの「企業」項目で置換します。
Result mailBody 置換後の文章を保存する変数です。新たな変数mailBodyを新規作成します。

※新規で変数を定義する際は、入力欄で「Ctrl + k」を押します。「Set Name:」と表示されるので、続けて変数名を入力してエンターキーで確定します。

■「部署」を置換

次に、「%department%」を具体的な値に書き換えるために、「Replace」アクティビティを続けてドラッグ&ドロップします。

replace department

下表の通り、「Replace」アクティビティのプロパティを設定します。

項目 備考
DisplayName 「部署」を置換 アクティビティの表示名です。分かりやすい名前をつけておきましょう。
Input mailBody 置換の対象となる文章です。1つ前の処理で置換した文章が保存されている変数mailBodyを設定します。
Pattern “%department%” 置換される文字です。
Replacement row.Item(2).ToString 置換する文字です。レコードの「部署」項目で置換します。
Result mailBody 置換後の文章を保存する変数です。既に作成している変数mailBodyに上書きします。

■「担当者」を置換

最後に、「%name%」を具体的な値に書き換えるために、「Replace」アクティビティを続けてドラッグ&ドロップします。

replace name

下表の通り、「Replace」アクティビティのプロパティを設定します。

項目 備考
DisplayName 「担当者」を置換 アクティビティの表示名です。分かりやすい名前をつけておきましょう。
Input mailBody 置換の対象となる文章です。1つ前の処理で置換した文章が保存されている変数mailBodyを設定します。
Pattern “%name%” 置換される文字です。
Replacement row.Item(1).ToString 置換する文字です。レコードの「担当者」項目で置換します。
Result mailBody 置換後の文章を保存する変数です。既に作成している変数mailBodyに上書きします。

これで、「%company%」「%department%」「%name%」の記号を、レコードの情報をもとに書き換えることができるようになりました。

【Step.11】メールを送信する

最後の処理として、メールを送信するアクティビティを追加します。

画面左側のアクティビティ検索窓に「send」と入力します。表示された「Send SMTP Mail Message」アクティビティを「replace」の下にドラッグ&ドロップしましょう。

send mail

下表の通り、「Send SMTP Mail Message」アクティビティのプロパティを設定します。

項目 備考
To row.Item(3).ToString 宛先のアドレスです。レコードの「メールアドレス」項目を設定します。
Subject “製品の利用に関するお知らせ” メールの題名です。
Body mailBody メールの本文です。置換後の文章が保存されている変数mailBodyを設定します。
Port 465 ポート番号です。Gmailを使用する際は465を設定します。
Server “smtp.gmail.com” サーバー情報です。Gmailを使用する際は、smtp.gmail.comを設定します。
Email “XXXX@gmail.com” 送信元のアドレスです。XXXXには適切な値を入力してください。
Password “XXXXXXX” パスワードです。適切な値を入力してください。

今回はGmailを使用してメールを送信しますが、他のメールサーバーを使用する際は、ポート番号やサーバー情報などを適宜変更してください。

なお、Gmailを使用してメールを送信する場合は、下記の設定を事前に行っておく必要があります。

UiPathワークフローの実行

【Step.12】ワークフローの実行

それでは、上部パネルの「Run」をクリックし、このワークフローを実行してみましょう。

run

宛先のアドレスに、下記のようなメールが送信されると思います。株式会社Bについては、「送信」項目をNGに設定したので、メールが送信されていません。

result1

result2

メール冒頭部の「企業」「部署」「担当者」が正しく記入されています。また、トライアルとベーシックで、異なるメール文面(テンプレート)が適用されています。

まとめ

今回はExcelリストに記載された情報をもとに、営業メールを送信する処理を自動化しました。

下記の点を理解して、他の業務にも応用できるようにしましょう。

  • 「Excel Application Scope」を使ってExcelファイルを開く
  • 「Read Range」を使ってシートの中身を読込む
  • 「Read Cell」を使ってセルの値を読込む
  • 「For Each Row」を使った繰り返し処理
  • 「If」を使った分岐処理
  • 「Replace」を使った文字の置換
  • 「Send SMTP Mail Message」を使ったメール送信

最後に、UiPathに関する参考図書を一冊紹介しておきます。
できるUiPath 実践RPA <amazon.co.jp>

※本書の内容はネット上でも公開されているようです(できるネット)。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする