8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Automate Desktopを使った定型メール自動送信ツールをつくってみた。

Posted at

青とオレンジ 棒 マーケティング プレゼンテーション.jpg

定型文メールは意外と面倒

こんにちは。ツールを作成して業務の自動化できないか日々考えているyoneといいます。

さっそくですが、メールで定型文を送信するといったことありませんか?
私は取引先や社内向けの連絡で多いとき何十件とメールを送信していますが、その中には定型文のメールがいくつかあります。
例えば、

・定型業務連絡
・取引先への書類関連の送付依頼 等

そういった定型的なメールを作成後に送信するだけとはいえ、宛先・Cc・Bcc・件名・本文と入力するのは簡単にできるとはいえ意外と面倒くさいですよね。また、同僚から「この前送ったメールどれだっけ?」と探すのに苦労していたようで、理由を聞くと「前回出したメールと同様の言い回しでメールを送信したいけど、その前回の送信メールが見つからない」とのこと。私もこれよくあるなと納得。この問題も定型メールとして本文を管理することで解決できるのでは?

というわけで、定型文メールを自動送信するツールを作成してみました!

完成品はこちら

 誰の(社員番号)、どの定型文メール(メール種別)かを選んでメール送信します。

自動送信されたメールはこちら↓↓↓
mail.jpg

作成してみよう!

今回使用したもの

 ・Power Automate Desktop
  データの収集・整理・加工などパソコンで操作している手順を記録して、
  業務効率につながるアプリを開発できる製品
 ・Excel
  表計算ソフト
 ・outlook
  電子メールクライアントソフト

作成手順

1. Excelにメール送信情報を一覧化する。

 メール送信に必要な基本情報の一覧を作成します。
 ※社員番号・メール種別の単位で作成しています。

■今回設定した情報

・社員番号
利用者の社員番号を設定
・メール種別
定型文の種類を番号で設定
・To
送信メールの宛先(To)を設定
・Cc
送信メールのCcを設定
・Bcc
送信メールのBccを設定
・件名
送信メールの件名を設定
・本文
送信メールの件名を設定
・添付ファイルパス
添付したいファイルパスを設定

実際に作成したExcelは以下↓↓↓
excel.jpg

2. Power Automate Desktopで自動送信メールのフローを作成する。

送信したい定型文のメールを選び、その選んだものが「1. Excelにメール送信情報を一覧化する。」で作成したExcelに該当するメール情報が存在した場合、定型文メールを送信するフローを作成します。

・全体フロー図

全体フロー.jpg

・全体フロー説明

① ダイアログを表示して社員番号を入力・メール種別を選択するアクションを追加。
 追加アクション:[メッセージ ボックス] - [リストから選択ダイアログを表示]
         [メッセージ ボックス] - [入力ダイアログを表示]

② 「1. Excelにメール送信情報を一覧化する。」で作成したExcelよりメール送信情報を
 取得するアクションを追加。
 追加アクション:[Excel] - [Excel の起動]
         [Excel] - [Excel ワークシートから読み取り]
         [Excel] - [Excel を閉じる]

③ ②で取得したメール送信情報の件数文繰り返し行うアクションを追加。
 追加アクション:[ループ] - [For each]

[For each]アクションはExcelに記載した複数行のメール情報を1行づつ取り出して行数文繰り返し処理を行ってくれます。

以下の表でいうと、1回目は①の行データを取得、2回目は②のデータを取得といった感じで処理されていて、全3行のデータがあるので、3回繰り返し処理が行われます。

メール情報① メール情報②
mail①-1 mail②-1
mail①-2 mail②-2
mail①-1 mail②-3

④ ①で選択されたメール種別とExcelのメール種別を比較するアクションを追加。
 ・一致する場合は⑤へ
 ・一致しない場合は③へ
 追加アクション:[条件] - [if]

⑤ ①で選択された社員番号とExcelの社員番号を比較するアクションを追加。
 ・一致する場合は⑥へ
 ・一致しない場合は③へ
 追加アクション:[条件] - [if]

⑥ Outlookを起動してメール送信するアクションを追加。
 追加アクション:[Outlook] - [Outlook を起動します]
         [Outlook] - [Outlook からのメール メッセージの送信]
         [Outlook] - [Outlook を閉じます]

⑦ メール送信が完了したため繰り返し処理を終了するアクションを追加。
 追加アクション:[ループ] - [ループを抜ける]

⑧ フロー終了のメッセージ出力するアクションを追加。メール送信できた場合と
 メール送信できなかった場合で表示するメッセージを変えています。
 追加アクション:[条件] - [if]
         [条件] - [else]
         [メッセージ ボックス] - [メッセージを表示]

・作成したフローコード

 作成したフローコードです。試してみたい方はぜひ使ってみてください。

フローコード
実際に作成したフローコード
Display.SelectFromListDialog.SelectFromList Title: $'''送信メール選定''' Message: $'''送信したい定型メールを選択してください。''' List: $'''XXXX1
XXXX2
XXXXX3''' IsTopMost: True AllowEmpty: False SelectedItem=> SelectedItem SelectedIndex=> SelectedIndex ButtonPressed=> ButtonPressed3
Display.InputDialog Title: $'''社員番号入力''' Message: $'''社員番号を入力してください。''' InputType: Display.InputType.SingleLine IsTopMost: True UserInput=> SyainNo ButtonPressed=> ButtonPressed2
SET MailSend TO $'''false'''
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''作成したメール送信情報のExcelファイルのパスを指定''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.ReadFromExcel.ReadAllCells Instance: ExcelInstance ReadAsText: True FirstLineIsHeader: True RangeValue=> ExcelData
Excel.CloseExcel.Close Instance: ExcelInstance
LOOP FOREACH CurrentItem IN ExcelData
    SET RowSyainNo TO CurrentItem['社員番号']
    SET MailKind TO CurrentItem['メール種別'] - 1
    IF MailKind = SelectedIndex THEN
        IF SyainNo = RowSyainNo THEN
            Outlook.Launch Instance=> OutlookInstance
            Outlook.SendEmailThroughOutlook.SendEmail Instance: OutlookInstance Account: CurrentItem['To'] SendTo: CurrentItem['To'] CC: CurrentItem['Cc'] BCC: CurrentItem['Bcc'] Subject: CurrentItem['件名'] Body: CurrentItem['本文'] IsBodyHtml: False Attachments: CurrentItem['添付ファイルパス']
            Outlook.Close Instance: OutlookInstance
            SET MailSend TO $'''true'''
            EXIT LOOP
        END
    END
END
IF MailSend = $'''true''' THEN
    Display.ShowMessageDialog.ShowMessage Title: $'''メール送信''' Message: $'''メール送信が完了しました。''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed
ELSE
    Display.ShowMessageDialog.ShowMessage Title: $'''メール送信''' Message: $'''社員番号または定型メールが登録されていません。''' Icon: Display.Icon.ErrorIcon Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed
END

フローコードの「$'''作成したメール送信情報のExcelファイルのパスを指定'''」の部分を「1. Excelにメール送信情報を一覧化する。」で作成したメール送信情報のExcelファイルのパスに書き換えてから使用してください。

参考資料

Power Automate Desktopの使い方をわかりやすく説明しています。参考になるのでぜひ!

実際に使用してもらった感想

「少しでも業務負荷や効率化を図れるよう定型メールの自動化ツールを作成したので実際に使用して感想をきかせてください!」とお願いし以下フィードバックをいただきました。
※事前に作成した目的・機能説明・使い方について説明を実施

良かった点

 
・単純につくりあげるのはすごい。(部内チームメンバー Fさん)

・定型文とはいえいちいちどんな内容かは覚えていないから、前回送信したメールを探して、
 メールを送信しているから。その面倒くささが解消されそう。
 (部内チームメンバー Fさん)

・連絡しなければいけないことがもれない。(部内チームメンバー Sさん)

悪かった点・改善点

・本文の内容を少し変えてだせるようになるとさらに良いかも(部内チームメンバー Fさん)

・定型メールを出すタイミングがその他ツールのステータスで判断しているので
 連携できるとさらに楽かも。(部内チームメンバー Fさん)

・複数の定型メールをまとめてだせるともっといいかも(部内チームメンバー Sさん)

フィードバックを受けて

簡単な使い方の説明のみでしたが、使い方に対する意見はなかったので、そこは良かったのかなと。悪かった点・改善点では、もう少し拡張するとさらに良いといった意見だったので、もう少しアッデートすることで利用用途が増え、さらに業務改善向上につながると感じました。
 
「こういった業務も自動化できたらよいのにな」と、他にもいくつか業務改善案をいただくこともできたので新たにツールを作成してみたいと思います。また、そういった意見をいただけたことから、少しは自動化に興味を持っていただけた感じだったので(思っているだけ?w)、チーム内で業務改善ツールを作成し、部署内に発信できるようになるとよいなと感じました。

作成してみた感想

「Power Automate Desktop」ですが、やりたいことを組み合わせることで1つのツールが作成できるのでパズルをやっている感じ?で楽しくできました。また、UIや使い勝手がよく初心者の私でも時間を掛けづに作成できました。
これから「自動化ツールをを使って業務改善してみたい!」といった方にはお勧めのツールだと思います。また、「Power Automate Desktop」以外のツールで自動化ツールの作成を断念したことがあるという方も、ぜひ試しに使ってみはいかがでしょうか?

memo

・Power Automate Desktop 使用時にたまにフリーズすることがあった。
 フロー作成画面は少し重い感じがしました。

・[メッセージ] - [カスタム フォームを表示]がアクション追加後のフォームデザイン時
 エラーが発生し使用できなかった。(原因調査中)
 

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?