【RPA例題】Excelリストの案件について担当従業員にメールで通知を送る

Excelにはいろいろな業務で使われるリストが保存されていますが、たとえば担当者/該当者の名前がExcelの列に書かれていることはよくあることですよね。そして、これらの担当者/該当者にメールで(定期的に)通知を送りたいこともよくあることだと思います。業務システムですべて自動化されていれば、システムから自動で通知メールが出るのが理想ですが、すべてが自動化されていないのが現実的な世界ですね。

使われるシナリオとしては、たとえば以下のようなものが想定されます。

# 利用シナリオ

* Salesforce上の商談/リードへのアクションを担当営業に促す
* 今月の必須トレーニングの実施を各従業員に促す
* 今週の掃除担当を該当従業員に促す
* 今月の給与明細を各従業員に送信する
* 今週の勤怠入力シートを各従業員に送信する

これらはメール送信オペレーションの複雑さで分類していくと2通りに分かれます。

* **ケース1: 各担当従業員がリスト内に1回だけ出現** - 各行ごとにメール送信オペレーションを処理していけば完了します。
* **ケース2: 各担当従業員がリスト内で複数の行に出現** - 各行ごとにそれぞれメール送信しても悪くはないですが、行の数だけ同じ人にメールを出してしまうため、メールを受信する側は30通とかメールをもらったら困惑するかもしれないので、1通にまとめる処理が必要になります。

これらの2つのケースについて、どのようにRPAでオペレーションを組めばいいかについてみてみましょう。
※ 記事の最後にあるAACEClientの電子メール設定は実施済みであることが前提です。

# ケース1: 各担当従業員がリスト内に1回だけ出現
**適用例**
従業員に給与明細とパスワードを送信します。

<table>
<tr><th></th><th style="text-align:center;">A</th><th style="text-align:center;">B</th><th style="text-align:center;">C</th></tr>
<tr><th>1</th><td><b>従業員の電子メールアドレス</b></td><td><b>従業員氏名</b></td><td><b>パスワード</b></td></tr>
<tr><th>2</th><td>taro.sato@example.com</td><td>佐藤太郎</td><td>Gwfda7FV</td></tr>
<tr><th>3</th><td>kakeru.suzuki@example.com</td><td>鈴木翔</td><td>vk7uFtK7</td></tr>
<tr><th>4</th><td>tomoko.sasaki@example.com</td><td>佐々木智子</td><td>DUpSUcWK</td></tr>
<tr><th>5</th><td>keiko.namekawa@example.com</td><td>滑川恵子</td><td>YTJ6uSKB</td></tr>
<tr><th>6</th><td>tadashi.koide@example.com</td><td>小出正</td><td>2Dka99n7</td></tr>
<tr><th>7</th><td>minoru.tajima@example.com</td><td>田島実</td><td>LFt5UZvq</td></tr>
</table>

これは単純なケースで、表で1行ずつデータを読み込んで、[Send Emailコマンド](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/commands/send-email-command.html?_LANG=jpjp)でメールを1通ずつ送信していけばOKです。

**実施すること**

* ループを作成して、Excel の行ごとに電子メールアドレスと差し込むデータを取得
* Send Emailコマンドで送信テンプレートを作成してデータを差し込んで1行ずつ送信

**作成したアクションリスト**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/308d4cbb-82c6-dbb0-3572-654f85198494.png)
5行目: Send Emailコマンドで設定するコンテンツ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/33fd618e-1ddd-0be7-914a-ebbebe3ab044.png)


**送信結果**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/f4d435bd-ebb0-a0ca-a5cc-eb1dec478c45.png)



# ケース2: 各担当従業員がリスト内で複数の行に出現
**適用例**
営業担当者に商談のフォローアップメールを送ります。

<table>
<tr><th></th><th style="text-align:center;">A</th><th style="text-align:center;">B</th><th style="text-align:center;">C</th></tr>
<tr><th>1</th><td><b>従業員の電子メールアドレス</b></td><td><b>従業員氏名</b></td><td><b>商談</b></td></tr>
<tr><th>2</th><td><font color="Red">taro.sato@example.com</font></td><td>佐藤太郎</td><td>株式会社ABC商事、商品A-123</td></tr>
<tr><th>3</th><td><font color="Green">kakeru.suzuki@example.com</font></td><td>鈴木翔</td><td>XYZ鋼業株式会社、商品B-256</td></tr>
<tr><th>4</th><td>tomoko.sasaki@example.com</td><td>佐々木智子</td><td>サード21株式会社、商品A-123</td></tr>
<tr><th>5</th><td><font color="Green">kakeru.suzuki@example.com</font></td><td>鈴木翔</td><td>BBB株式会社、商品A-123</td></tr>
<tr><th>6</th><td><font color="Red">taro.sato@example.com</font></td><td>佐藤太郎</td><td>AAホールディングズ株式会社、商品B-256</td></tr>
<tr><th>7</th><td><font color="Red">taro.sato@example.com</font></td><td>佐藤太郎</td><td>BCG鉄鋼株式会社、商品B-256</td></tr>
</table>

A列に同じ宛先が複数ランダムに出てくるケースです。この場合は、まずA列を並び替えて同じ宛先は連続するように変更した後に、同じ宛先が続く限り商談情報側の文面を結合して、1つの宛先に対して1通にまとめて[Send Emailコマンド](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/commands/send-email-command.html?_LANG=jpjp)で送信しましょう。


**実施すること** (先ほどと違うところを<font color="Red">赤字</font>にしました)

* <font color="Red">「従業員氏名」列で並び替えを行い、同じ従業員氏名が連続するようにする</font>
* ループを作成して、Excel の行ごとに差し込むデータを取得、<font color="Red">従業員氏名が同じである行の場合はまとめる</font>
* Send Emailコマンドで送信テンプレートを作成して、<font color="Red">従業員氏名が異なるごとにデータをまとめて</font>差し込んで送信

**作成したアクションリスト**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/471287fd-e454-84ec-496a-87f3ac770cb6.png)
3行目: 選択セルの位置で昇順の並び替えコマンドを発行。`Alt`+`A`+`S`+`A`。`[Alt Down]`と`[Alt Up]`で囲まれる文字列は小文字である必要あり。
12/19行目: Send Emailコマンドで設定するコンテンツ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/67da15c5-4599-fc0b-e4e5-1dfa49571d96.png)
17行目: Variable Operation (`vDesc`変数への代入時に以下のようにして改行を元の値と`Excel Clumn(3)`の間に挿入)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/33939274-c6cd-0f57-30de-fccb57bbb3bb.png)


**送信結果**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/2784b6a5-cf6e-34c9-3d18-f617a14e9049.png)



# おまけ: AACEClientでの電子メール設定
あらかじめAACEClient (Automation Anywhere Community Edition クライアント) でオプション (Options)メニューから電子メール設定 (Email Settings)で利用するメールサーバーの設定を行っておく必要があります。GmailのSMTPを使う場合は以下のように設定します。(利用するアカウントのユーザー名とパスワードを入れてください)

* **Host** (ホスト): smtp.gmail.com
* **Port** (ポート): 587
* **My server uses secure connection (SSL/TLS)** (サーバーに安全な接続 (SSL/TLS)を使用): ON
* **My server requires authentication** (サーバーには認証が必要です): ON
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/89812f9a-aeb2-a4c5-1fa5-f550e9a794f8.png)

Office 365で設定する場合の例は「[Automation Anywhere と Office 365 でメール送信を自動化する](https://qiita.com/RPAbot/items/4c3e7b215027caef1240)」を参照のこと。