3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Power Automate】Outlookの未返信メールを検知・返信リマインドをする方法

Last updated at Posted at 2025-08-05

Qiita_Thumnail (1200 x 630 px).png

はじめに

日々の業務において、受信メールに対する返信を後回しにした結果、返信漏れが発生してしまった経験はありませんか?

特に忙しい時間帯や複数タスクを抱えている場合に、このようなミスが起こりやすくなります。

本記事では、Power Automateを使用して、未返信のまま日付をまたいでしまった受信メールに対して、Teamsチャットで返信リマインドを通知する方法をご紹介します。

前提条件

本フローの構築は、以下の条件を満たしている方を対象としています。

・Microsoft 365(旧Office365)アカウントを保持していること
・業務でOutlookとTeamsを利用していること
※2025/07時点の情報となります。

フロー概要

今回は前日に届いたメールのうち返信ができていないメールが存在する場合に、Teamsで返信リマインドを通知するフローを構築します。作成するフローの概要は以下の通りです。

作成フロー

01_作成フロー.png

実際にPower Automate で作成したフローは以下になります。

※日本時間の朝9時にスケジュール実行される想定で、後述の検索クエリを設定しています。

※未返信メールがなかった場合にも、実行されたことが分かりやすいように、Teamsにメッセージを投稿しています。

02_PAフロー.png

構築のポイント

Power Automate で上記フローを作成する際に、ポイントとなる箇所を解説します。

1.受信メールの取得範囲を検索クエリで指定する(昨日受信したメールのみ取得する)
検索クエリを設定することで、メールの取得範囲を指定することができます。

画像では「受信メールを取得する (V3)」アクションの検索クエリに以下を設定しています。

{
  「received>= @{variables('strメール取得_開始日時')} AND received<= @{variables('strメール取得_終了日時')}」
}

上記により、昨日受信したメールのみを取得することができます。 

※「strメール取得_開始日時」と「strメール取得_終了日時」は文字列タイプの変数です(後述)

03_受信メール_検索クエリ.png

(補足)検索クエリのパラメーターについて、詳しくは下記リンク先をご参照ください。

検索クエリでは、文字列タイプの変数(strメール取得_開始日時/strメール取得_終了日時)を使用することができます。

画像では「変数を初期化する」アクションで、文字列タイプの変数を作成しています。

※この「変数を初期化する」アクションは、「受信メールを取得する (V3)」アクションより前に設置してください。

1-1. 文字列変数「strメール取得_開始日時」の設定
値に以下を設定することで日本標準時(JST)の 昨日00時00分00秒 を、UTC形式で取得しています。

{
「formatDateTime(addHours(startOfDay(addDays(utcNow(), -1)), -9), 'yyyy-MM-ddTHH:mm:ssZ')」
}

※日本時間の朝9時にスケジュール実行される想定で、値を設定しています。

04_strメール取得_開始日時.png

1-2. 文字列変数「strメール取得_終了日時」の設定
値に以下を設定することで日本標準時(JST)の 昨日 23時59分59秒 を、UTC形式で取得しています。

{
「formatDateTime(addSeconds(addHours(addDays(startOfDay(addDays(utcNow(), -1)), 1), -9), -1), 'yyyy-MM-ddTHH:mm:ssZ')」
}

※日本時間の朝9時にスケジュール実行される想定で、値を設定しています。
05_strメール取得_終了日時.png

2.送信メールの取得範囲を検索クエリで指定する(昨日~フロー実行時点までの送信メールのみ取得する)
受信メール同様、送信メールも検索クエリを設定することで、メールの取得範囲を指定することができます。

画像では「送信メールを取得する (V3)」アクションの検索クエリに以下を設定しています。

{
「sent > strメール取得_開始日時」
}

これにより、昨日(strメール取得_開始日時)から、フロー実行時点までに送信したメールのみを取得することができます。

06_送信メール_検索クエリ.png

3.受信メールに返信済みか確認する
受信メールと送信メールの会話ID(conversationId)が一致した場合、返信を行っていると判断します。

しかしながら、会話IDの一致のみで返信済みであると判断してしまうと、送信したメールに対して、更に相手から返信がきている場合は、リマインドが漏れてしまいます。このようなリマインド漏れを回避するためには、更に送信メールの送信日時が、受信メールの受信日時よりも、後の日時であるかを確認する必要があります。(後述4. )

07_会話ID比較.png

4.送信メールの送信日付が、受信メールの受信日付より後かを確認する
画像では、会話IDが一致した受信メールと送信メールの「receivedDateTime」を比較し、送信メールが受信メールよりも後に送信されている場合は「返信済フラグ」をtrueに設定しています。

この「返信済フラグ」がfalse(デフォルトのまま)に設定されている場合のみ、後続処理でリマインドメッセージ用のテキスト変数(strチャネル投稿文)に、リマインドが必要なメール情報を追加します。

08_日時比較.png

※送信日時も「receivedDateTime」という名前で取得されます。

5.テキスト変数にリマインドメッセージを追加する
先述3. で「返信済フラグ」がfalseに設定されている場合、リマインドメッセージ用のテキスト変数(strチャネル投稿文)に、リマインドが必要なメール情報が追加されます。受信メールリストのFor each処理内に、この追記処理が入っていることで、リマインドが必要なメールの情報が「strチャネル投稿文」に、都度追記されます。

09_テキスト変数追加.png

6.リマインドを行うか確認する
リマインドメッセージ用のテキスト変数(strチャネル投稿文)に、値が設定されている場合は、Teamsチャネルにリマインドを送ります。

画像では「条件」アクションに以下の値を設定し、「strチャネル投稿文」が1文字以上の場合は、Teamsチャネルにリマインドを送る仕様としています。

左辺: length(variables('strチャネル投稿文'))
右辺: 1
演算子: 以上

10_リマインド確認.png

11_リマインド確認.png

※画像では、未返信がなかった場合にも、実行されたことが分かりやすいように、Teamsにメッセージを投稿しています。(未返信なし チャットまたはチャネルでメッセージを投稿する)

まとめ
Power Automateを活用すれば、個人の注意力に頼らず、ミスを未然に防ぐ仕組みを構築することができます。

NextStepとしては、AIと連携して、以下のようにフローを拡張していくことも可能です!

メール本文の要約をAIで生成し、リマインド通知に含める:長文メールのポイントを把握しやすくなり、対応のスピードが向上します。
件名・本文から返信期限やトピックを抽出し、リマインド優先度を自動分類:重要なメールを見逃さない仕組みを実現できます。
返信テンプレート候補をAIに生成させて提案:返信作業の負担を軽減し、迅速な対応が可能になります。
メールの返信漏れといった小さな見落としが大きなトラブルに発展する前に、自動化によるリスク回避をぜひご検討ください!

株式会社ITSOでは一緒に働く仲間を募集しています。

私たちは、真のデジタル変革の実現を目指すハイパーオートメーションカンパニーです。

「ITの力で未来の働き方をデザインし、人と企業の価値をリデザインする」ことをミッションに、先進的なハイパーオートメーションの技術を通じて、世界中の個人や組織がより多くの成果を達成できるよう支援しています。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?