本記事では、Power Automate DesktopでOutlookメールの自動送信の自動化について説明します。
私の所属するプロジェクトでは、毎日出勤時と退勤時に作業開始のメールを送るというルールがあります。メールボックスから昨日送ったメールをコピーして送信していますが地味にめんどくさいです。それに、打刻と同じくメールもたまに送るの忘れちゃうんですよね・・・。こういう日々の定例作業はなるべくなら時間をさきたくない。
ということで、今回はOutlookでのメール送信を自動化してみたいと思います。
ITに自信のない方や、Power Automate Desktop(以下PAD)を触ったことのない方でもつまずくことのないよう、かなり細かく解説を入れていますので、
安心して読んでいただければなと思います♪
はじめにやるべきこと
PADでやりたいことを実現するためには、実際に自分が手で操作するときになにをしているのかを細分化してみます。例えば、「PADでメールを自動送信する」がやりたいことなのであれば、以下のような手順に細分化できます。
ただ単にメール送信を自動化するといっても、様々な工程が含まれています。今回のメール送信以外であってもこの考え方は同じで、PADでなにかやりたいと思ったら、まずはやりたいことを洗い出して細分化してみることが重要となります。
やりたいことの詳細が不明確なまま「PADで〇〇がしたい!」とネットで検索をしても、途中まで読んで「これは私のやりたいことと違うから参考にできない」「なにをしているか分からない」という事態に陥りやすいです。
これも違う、これも参考にならない・・・
で気づいたらタブが大量に、なんてことありますよね。
逆にいうと、この考え方を意識するだけで、検索もスムーズになり理解力も深まります。この考え方はPADだけでなくプログラミングにおいても重要です。
細分化した手順をフローに落とし込む
次に、前項で細分化したやりたいことをPADのフローに落とし込んでいきます。
PADの起動と画面の説明
PADを開いて、左上の「新しいフロー」を押下します。
フロー名を入力して「作成」を押下します。フロー名はなんでもOKですが、後からみて分かりやすい名前にしておくといいです。
以下のような画面が開きます。
アクションの追加
では、先ほどやりたいことを細分化した内容を思い出しながらフローにアクションを追加していきましょう。
Outlookの起動
まずは「Outlookを起動する」ということで、左側のアクションから該当するものを探します。「Outlook」というカテゴリ内の「Outlookからのメール メッセージの送信」が該当しますので、ドラッグ&ドロップで右側のフローのエリアに追加します。
ドラッグ&ドロップすると以下のような設定モーダルが出ますが、そのままで「保存」を押します。
ここで出てくる「インスタンス」というのは、起動しているOutlookのメールアプリのことです。Outlookだとあまり実感ないかと思いますが、例えばブラウザを複数起動したりしますよね。この一つひとつがインスタンスになります。こちらはOutlookを終了するときにまた使います。
変数の設定
次に、メール送信の設定!といきたいところなのですが、先にメール送信時にセットする変数を設定します。
なぜ「変数の設定」をするのか
変数とか・・・難しい設定分かんないよ!
「変数」と聞くと、一気にプログラミング臭がしてきて拒絶反応な方もいるかもしれません。でも、ここでは特に難しいことはせず、プログラミング知識も不要です。「メールアドレスとか本文とか、固定化された文章は最初に定義しておこう!」というだけですので手順通りに進めていただければ大丈夫です。
ちなみに、「変数の設定」はしなくてもフローを作成することは可能です。ネット記事に載っているフローでは変数の設定をしていない場合も多いです。じゃあなんでわざわざやるのかというと、
- あとからフローを見たときに分かりやすい
- フローの先頭に書いてあると変更するときスムーズ
- 変更するときに一か所変えるだけで済む
上記のようなメリットがあるためです。
例えば、田中先輩へ送るメールを自動化する場合に「メールを送信する」アクションに宛先をそのまま設定すると、送信先が別の先輩に変わったときに5か所変更が必要です。
しかし、「メールを送る」アクションには宛先の変数が入ってくるように設定しておけば、先輩が変わった場合にも変数を設定している一か所のみ変更すればOKとなります。
「変数の設定」アクションの追加
「変数の設定」アクションをフローに追加します。このとき、先ほど追加したOutlookの起動の後に追加しても良いですが、変数の設定は一番先頭にまとめて置いておいたほうが後から見やすいので、Outlook起動アクションの前にドラッグ&ドロップで追加します。
以下のような設定モーダルが出ますので、「変数」部分を分かりやすい名前に変更します。
変数名は「%」の中身のみ変更してください。値には宛先のメールアドレスを記載します。
その他についても同様に設定していきます。
変数名 | 設定値 |
---|---|
MailFrom | 自分のメールアドレス |
MailTo | 宛先メールアドレス |
MailTitleIn | 作業開始メールのタイトル |
MailTitleOut | 作業終了メールのタイトル |
MailTextIn | 作業開始メールの本文 |
MailTextOut | 作業終了メールの本文 |
以下と同じように6つの変数設定ができていればOKです。
「作業終了メールを送る」アクションの追加
メールの送信部分を作成します。「Outlookからのメール メッセージの送信」をドラッグ&ドロップでフローに追加します。
「パラメーターの選択」で変数をセットする
ここで先ほど設定した変数を使います。「アカウント」に送信元メールアドレス、「宛先」に宛先メールアドレス・・・と、それぞれ対応する変数を設定します。直接入力する必要はなく、右側のほうにある「{x}」というところを押すと
あらかじめ設定しておいた変数が選べるようになっているので、該当のものを選択していきます。
以下のように設定したらOKです。(既に値が入っているところはそのままで大丈夫です)
時間に応じて送るメールを分ける
メールを送信する際に、作業開始時には作業開始メール、作業終了時には作業終了メールを送るようにしたい。
これを実現するには2通りの設定方法があります。
- フローを2つ用意する
- 作業開始メール、作業終了メールを送信するフローをそれぞれ作成する
- ひとつのフローでメールを送信する条件を分ける
- 12時までは作業開始メール、12時以降は作業終了メールを送信するようにする
フローを2つ用意する方法であれば、遅刻や早退などのイレギュラーなケースにも対応できますが修正が発生した場合に修正箇所が2倍になります(フローは一覧画面からコピーを作成できますので、増やすこと自体は簡単です)。
ひとつのフローの場合は、ログイン時にフローを実行したい場合にイレギュラーなケースに対応できない可能性があります。どのように使用するのかを考えたうえでどちらかを決定することをおすすめします。
今回は、ひとつのフロー内で処理を分岐させる方法でフローを作成します。
現在時刻の取得
12時を基準としてフローを実行する時刻がそれより前か後かを判定するので、現在時刻を取得します。「現在の日時を取得」をドラッグ&ドロップで追加します。
何も変更せずに「保存」を押します。
if文による条件判定
もし、12時より前だったら作業開始メールを送って、
もし、12時以降だったら作業終了メールを送る
「もし〇〇だったら」と条件を分けるときには「if」を使います。「条件」>ifをドラッグ&ドロップで追加し、以下のように設定します。
「%CurrentDateTime%」は現在日付が格納された変数です。「2番目のオペランド」というのは、比較対象のことです。「現在日付が12時より前か後か」を判定したいので、「12:00」と入力します。
「保存」を押すと、フローの一番最後にifアクションが追加されているかと思います。
「もし〇〇だったら」の中に処理を追加したいので、以下のように「Outlookからのメールメッセージの送信」アクションをifとEndの間にドラッグ&ドロップで移動させます。
これで「もし12時より前だったら」の部分ができました。
else if でもう一つの条件判定をする
次に、「条件」>Else if を追加します。このとき、Endの手前に追加するようにしてください。
最初のオペランドには「%CurrentDateTime%」、演算子を「より大きい」にし、2番目のオペランドには「12:00」と設定します。
「保存」を押すと、以下のようなフローになっているかと思います。
「作業終了メールを送る」アクションの追加
Else if のなかに作業終了メールを送るアクションを追加します。既に作成してある作業開始メールのアクションの右側にある3点マークを押して、アクションをコピーします。
貼り付けるときはいったんEndをクリックしてから右クリック→貼り付け をするとElse ifのうしろに追加されます。
コピーができたら中身を編集します。ダブルクリックもしくは右側の3点マークから編集できます。
変更するのは件名と本文の2箇所です。
メール送信完了まで待機させる
PADの処理は人間が操作するよりも断然早いです。間髪いれずにどんどんフローが実行されていきます。メールを送信してからOutlookを閉じるまでが早すぎると、以下のような警告メッセージが表示されます。
「まだ送信終わってないのに閉じていいの?」という確認のダイアログで、送信に失敗しているわけではありませんがOutlookが開きっぱなし&ダイアログが表示されっぱなしの状態になります。
これを防ぐために、「待機(遅延)」処理を入れてあげます。フローコントロールから「Wait」をフローの一番下に追加します。
だいたい5秒程度あれば大丈夫だとは思いますが、念のため10秒にしておきました。
Outlookを閉じる
さいごに、Outlookを閉じます。「Outlookを閉じます」アクションを一番下に追加します。何も変更せずに保存を押せばOKです。
メールを送信してみよう
PADのメニュー上部にある実行ボタンを押して動作確認してみます。このとき、Outlookは開いていても閉じていても大丈夫です。
フローが完了したらOutlookの受信メールを確認してみます。実行したのが12:00以降なので、作業完了のメールが送信されています。
PADのフローを完全自動化するには?
PADの一覧画面からフローの実行ができるのでそれだけでも十分ではありますが、完全自動化とは言えません。PAD内でスケジューリングできれば良いのですが、そのような機能はありません。
しかし、Windowsの標準機能である「タスクスケジューラ」を使ってPADを立ち上げて実行するという方法で実現することができます。設定手順は以下の記事にて説明していますので、完全自動化させたいという方は是非ご参照ください。
完成したメール自動化フローはこちら
完成したOutlookメール送信自動化フローは以下になります。
まとめ
Power Automate DesktopでのOutlookメール送信自動化について解説しました。今回は作業開始・終了メールを例にして解説しましたが、Excelの顧客リストのメールアドレス宛に自動送信するとか、特定のフォルダ内のファイルを添付して自動送信するとか、他にも様々な処理の自動化が実現できます。
視覚的に操作ができ、ノンプログラマーの方でも簡単にフローを作ることができるので、事務処理や定例のタスクを自動化するなど、ご自身の目的に合わせて色々と試してみると日々の作業の効率化や生産性の向上につながりそうです。
難点としては、無料版ではフローの共有が出来ないことですね。このブログでもPADに関して他にもいくつか記事を書いていますが、フローのキャプチャをパッと貼っただけだと実際に何が設定されているか分かりづらいんですよね・・・。ある程度知っている方ならなんとなく理解できるかもしれませんが、慣れないとフローを見ただけでは同じように設定しても動作しなかったりすると思います。
なるべくつまずかずに設定できるよう、設定値なども解説しているつもりではありますが、
何か分からないことや「手順通りにやったのに動かない!」
という場合にはお気軽にお問い合わせください。
コメント