【UiPathメモ】メールを受信したら次のアクティビティを実行させる
地方の中規模企業で「RPA推進担当」になった友達から
「色々な理由で会社のPCにUiPath入れられないから、
会社のPCから家のPCにメールして
受信したら自動処理して結果をメールで戻したい」
というリクエストを受けました。
こっちはUiPath初心者なのに無茶ぶりしてくんなーと思いつつ
相談されたから色々検討してみました。
(ちなみに、僕がUiPathを始めたきっかけになった友達とはまた別です)
やりたいこと:「メールを受信したらメッセージを表示させる」(メール取得をトリガー(きっかけ)にして次のアクティビティを開始する)
やりたかったことは
新着メールを受信
→ それをきっかけにして次に設定したアクティビティを実行(ここではメッセージを表示)
です。
友達がやりたいのは
会社から自宅PCにメールを送る
自宅PCでUiPathをスタンバイしておく
メールが来たら自動処理を実行する
自動処理したファイルを会社PCにメールで送り返す
ということです。
彼がやりたいことは詳細にはわからないので、僕はとりあえず「受信したら実行!」が成功すれば良いなと思い、メッセージ表示にしています。
なお、ここではメールをOutlookにしています。
結論
実行動画
やったこと
英語版UiPathの下記ページにアクセスし、サンプルをダウンロード
Email Automation. Mail Trigger Sample.
https://www.uipath.com/kb-articles/email-automation-mail-trigger-sample
① Mail_Trigger_Sample.xaml
② Process_Email.xaml
両方ともダウンロードします。
①のファイルを編集
【新着メッセージを1通取得シーケンス】
サンプルではGmailですがここではOutolookに変えています(そっちの方が簡単だから)。
画像では変数も名前を少し変えましたが、必ずしも変える必要はないです。
一点だけ、IMAPでメール送信するアクティビティを削除する場合、出力の変数をコピーして入れ替えたアクティビティの出力変数に貼り付けておきます。
【1分間待機シーケンス】
プロパティを変えて待機時間を変更することができます。
テストする時は、15秒~30秒くらいでもいいかもしれません。
自宅で待機させるときは、どれくらいがいいんでしょうね・・・頻度によるかも。
【メッセージを表示シーケンス】
Condition(条件)欄
mailMessage.Subject.Contains("keyword")
を
mailMessage.Subject.Contains("テスト")
に変える。
ここでは「テスト」にしています。
【Process_Email.xaml】
Body
を
好きなテキストに変えます。
ここでは
"メールを受信しました!(このメッセージは新着メールを受信した際に自動で表示されます)"
にしています。
プロジェクト実行後、新着メールを受信して、件名に「テスト」が含まれていれば、このメッセージが表示されます。
そして、新着メールがない、または新着があっても「テスト」が含まれていなければ、プロジェクトは待機したままになります。
実行後、Outlookにメールを送って、新着受信するとメッセージが表示されました(これも達成感半端なかった)。
解説
色々検索してみたのですが、ほんとにさっぱりでした(はぁーさっぱりさっぱり)。
なんせ「トリガー」っていう言葉に騙されて
「アクティビティを監視」
や
「ファイル変更トリガー」
ばかりに気を取られていたわけです。
それで、いやーこれできないんじゃねーと思っていました。
もしかして、そんなニーズってないんじゃない?
あいつのニーズ特殊なんじゃない?
とか思ってあきらめかけていました。
で、日本語の記事を探していても、らちがあかんなと思って英語で検索してみたら備後、いや、ビンゴでした。
しかも本家のUiPathサイトにあるし・・・なんで日本語引っ掛からなかったんだろう。いや、もしかして検索の仕方によってはあるのかも。
前の記事にも書いていますが、僕は素人ですのでこちらもご参考までお願いします。