記事公開日
最終更新日
第2弾!Power Automate Desktopでメール送信を自動化してみた -デスクトップフロー構築編-

前回、事前準備編としてブログを投稿しましたがいかがだったでしょうか。
あれから半年以上続編を投稿できず、大変申し訳ない気持ちでいっぱいです。
気持ちを切り替えて今回、続編の「デスクトップフロー構築編」をお届けいたします!
事前準備編ってどんなブログだった?とかまだ見ていない!という方いらっしゃいましたら、
是非こちらからご覧ください。
RPAで処理したい内容をおさらいしておきましょう。
・顧客リスト(Excel)から特定セルデータを抽出する
・Outlookを立ち上げる
・条件に合ったテキストファイルの文字を違う文字に置き換える
・メールを担当者に送信し、メール送信完了のポップアップウィンドウを表示させる
上記内容を処理できるRPAを作成していきます!
アクティビティ図
作成するアクションの流れは、下図の通りです。
デスクトップフローの作成
ここからは上記アクティビティ図に沿って実際にアクションを追加していきます。
①メッセージボックスで「営業メールを送信しますか?」と表示させ、「はい(Y)」または「いいえ(N)」ボタンを押下する
左ペインのアクションで「メッセージの表示」をドラッグ&ドロップして追加します。
追加後、メッセージボックスの詳細設定ウィンドウが立ち上がります。
表示させたい「メッセージボックスのタイトル」と「表示するメッセージ」を入力します。
「メッセージボックスアイコン」や「メッセージボックスボタン」等は、必要に応じて設定を行います。
項目をすべて入力したら、「保存」を押下します。
②「はい(Y)」を押下した場合、Excelを起動する
「いいえ(N)」を選択した場合、「処理を終了いたします」というメッセージを表示する
①のメッセージボックスで「はい(Y)」または「いいえ(N)」のボタンを切り替えるアクションを追加します。
前回、メールを送信してみたのブログの際には「Switch」と「Case」を用いてボタンの切り替えるアクションを
追加しましたが、今回はIF文を用いていきます。
IF文の詳細設定ウィンドウの「最初のオペランド」に①で生成した「ButtonPressed01」変数を入力し、
「演算子」は「と等しい(=)」を選択します。そして「はい(Y)」を押下した場合には「2番目のオペランド」に「Yes」と入力します。
もう1つ「IF」文のアクションを追加し、「いいえ(N)」を押下した場合には、「2番目のオペランド」に
「No」を入力します。
上記IF文のアクションを追加させると下図のようになります。
①の時点で「いいえ(N)」を押下した場合は、「処理を終了いたします。」というメッセージを表示させます。
「If ButtonPressed01='No' then」の配下に「メッセージを表示する」アクションを追加します。
①の時点で「はい(Y)」を押下した場合は、「If ButtonPressed01='Yes' then」の配下に
「Excelの起動」アクションを追加します。詳細設定ウィンドウで「次のドキュメントを開く」を選択し、
「ドキュメント パス」は、前回ブログの事前準備1で作成した「顧客リスト.xlsx」の保存場所を指定します。
詳細設定ウィンドウで「読み取り専用として開く」のトグルはONにして、「保存」ボタンを押下します。
③Excelワークシートから行と列を読み取り、変数に格納する
「Excelワークシートから最初の空の列と行を取得」アクションをドラッグ&ドロップします。
Excelインスタンスには、③で生成した「ExcelOpen」変数を指定します。
その後、「Excelワークシートから読み取る」アクションをドラッグ&ドロップして追加します。
「パラメータの選択」でそれぞれ値を入力していきます。
④Excelを閉じる
「Excelを閉じる」アクションをドラッグ&ドロップします。
②で読み取り専用としてExcelファイルを開いているので、「Excelを閉じる前」では「ドキュメントを保存しない」を選択し、「保存」ボタンを押下します。
⑤Outlookを起動させます
「Outlookを起動します」アクションをドラッグ&ドロップします。
変数を変える必要がなければ、そのまま「保存」を押下します。
⑥Excelワークシートで読み取った行の間だけ繰り返す
「For each」アクションのアクションを追加します。
「反復処理を行う値」に④で「Excelワークシートから読み取る」アクションで生成した変数を指定し、
「保存」ボタンを押下します。
⑦変数の設定をする
ここでは、後ほどIF文で用いる条件の変数を設定していきます。
⑥で生成した変数「Item1」を用いて事前準備編で作成した「顧客リスト.xlsx」の「プラン」と「使用月数」を
変数に設定していきます。
「使用月数」の「変数の設定」アクションには、「変数」は「Month」と変更し、
「値」には「%Item1['使用月数']%」を入力します。
②~⑦までのアクションをPower Automate Desktopに追加すると下記画像のようになります!
⑧Planがプレミアム版かつMonthが2か月であるか判断する
IF文のアクションを追加します。
詳細画面の「最初のオペランド」には、⑦で生成した「Plan」変数と「Month」変数を用いて記述していきます。
8-1 ファイルからテキストを読み取る
「ファイルからテキストを読み取る」アクションを追加します。
「ファイルパス」は、前回ブログの事前準備2で作成したメール本文になるテキストファイルの保存場所を指定します。
8-2 8-1で読み取ったテキストの文字を置き換える
「テキストを置き換えする」アクションを追加します。
置き換える文字は、事前準備編で紹介してありますのでそちらをご覧ください。
「解析するテキスト」には、手順8-1で生成した「templateMail1」変数を入力します。
「検索するテキスト」には、置き換える文字列を入力します。
「置き換え先のテキスト」には、⑥で生成した「Item1」を用いて「顧客リスト.xlsx」の「企業名」を入力します。
「顧客リスト.xlsx」の「担当者」と「プラン」も文字列を置き換えるので上記と同様に「テキストを置き換えする」
アクションを追加します。
8-3 Outlookでメールを作成し、送信する
「Outlookからのメール メッセージの送信」アクションを追加します。
詳細設定ウィンドウの「宛先」~「BCC」は⑥で生成した「Item1」変数を用いて「顧客リスト.xlsx」記載の
「宛先」~「BCC」を入力します。「件名」は、「○○ソフトウェアのご利用に関するお知らせ」を入力します。
また、「本文」には、手順8-1で生成した「templateMail1」変数を設定しておきます。
8-4 5秒待機をする
「Wait」アクションを追加します。今回は、5秒間の待機時間を作成します。
「期間」に「5」を入力して、「保存」ボタンを押下します。
⑧のフローを見ると下図のようになります。
⑨と⑩に関しては分岐の条件や読込を行うテキストファイルが異なるだけでアクションとしては⑧と同様なため割愛します。
⑪Outlookを閉じる
「Outlookを閉じます」アクションをドラッグ&ドロップして追加します。
詳細設定ウィンドウでは、特に何も変更せずに、「保存」ボタンを押下します。
⑫「各担当者にメールを送信しました」というメッセージを表示させる
「メッセージを表示」アクションを右にドラッグ&ドロップして追加します。
詳細設定ウィンドウには、「メッセージボックスのタイトル」と「表示するメッセージ」、
「メッセージボックスボタン」を設定します。設定後、「保存」ボタンを押下します。
⑪と⑫のフローを見ると下図のようになります。
最後に、作成したデスクトップフローを「保存」しましょう。
これですべてのアクションの追加が完了です!!
デスクトップフローの実行
完成したデスクトップフローを実行してみます。
実行後、正常にメールが送信できています。
またメール本文も、会社名と担当者、プランの値が置き換えられています!
また、フロー終了時には、メッセージボックスで「各担当者にメールを送信しました」という表示がされ、
「OK」を押下するとフローが終了しました!
今回は、すべてアクションをMainフローに追加させましたが、サブフローを用いてフローを作成することもできます。
サブフローを用いたほうが、よりフローを管理しやすくなると思います。
ご興味のある方は、サブフローをもちいたフローも作成してみてください!
まとめ
ここまでループ処理と分岐処理を用いて、メール送信の自動化のデスクトップフロー構築を見てきましたが
いかがだったでしょうか。このように各担当者に複数メールを送信することも可能です。
これを機にPower Automate Desktopを使用していただけると幸いです!
ちなみに有償にはなってしまいますがPower Automate Desktopで「Share Point」のクラウドアクションが
使用できるようになります!!詳しくはこちらをご覧ください。
弊社では、 Power Apps/Power Platformサポート&アプリカタログサービスを提供しております。
ご興味のある方はこちらもご覧ください。
このブログで参照されているMicrosoft、Power Automate、Power Automate Desktop
その他マイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。