Power Automate Desktop メールの抽出対象を日付範囲で指定
現状、メールのフィルターには日付を範囲する項目がありません。
その代替として、この記事ではメールの日付による条件指定の方法を紹介します。
前提としてこの取得時点ではフィルタリングできません。
取得したメールに対して条件判定を行うことで実現します。
Robin言語(コピー&ペースト用)
Power Automate Desktopにコピー&ペーストして利用可能です。
Outlook用。
Outlook.Launch Instance=> OutlookInstance
Outlook.RetrieveEmailMessages.RetrieveEmails Instance: OutlookInstance Account: `` MailFolder: $'''受信トレイ''' EmailsToRetrieve: Outlook.RetrieveMessagesMode.All MarkAsRead: True Messages=> RetrievedEmails
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateOnly CurrentDateTime=> CurrentDateTime
DateTime.Add DateTime: CurrentDateTime TimeToAdd: -30 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> FromDate
DateTime.Add DateTime: CurrentDateTime TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ToDate
LOOP FOREACH CurrentMail IN RetrievedEmails
Text.ConvertTextToDateTime.ToDateTime Text: CurrentMail.Date DateTime=> MailDate
IF (FromDate <= MailDate AND MailDate <= ToDate) = True THEN
# 対象メールへのアクション
Display.ShowMessageDialog.ShowMessage Message: CurrentMail.Date Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
END
END
Outlook以外。
Email.RetrieveEmails.Retrieve IMAPServer: `` Port: 993 EnableSSL: True Username: `` Password: `` AcceptUntrustedCertificates: False MailFolder: `` MailsToRetrieve: Email.RetrieveMessagesMode.All MarkAsRead: True RetrievedEmails=> RetrievedEmails
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateOnly CurrentDateTime=> CurrentDateTime
DateTime.Add DateTime: CurrentDateTime TimeToAdd: -30 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> FromDate
DateTime.Add DateTime: CurrentDateTime TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ToDate
LOOP FOREACH CurrentMail IN RetrievedEmails
Text.ConvertTextToDateTime.ToDateTime Text: CurrentMail.Date DateTime=> MailDate
IF (FromDate <= MailDate AND MailDate <= ToDate) = True THEN
# 対象メールへのアクション
Display.ShowMessageDialog.ShowMessage Message: CurrentMail.Date Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
END
END
解説
まず最初に「メール メッセージの取得」を設置します。
もし受信メールがOutlookに登録されているメールアドレスの場合、
「Outlook を起動します」と「Outlook からメール メッセージを取得します」に替わります。
このオプションのメールフィルター中(日付以外)で可能な限り件数を絞ることが出来れば理想的です。


次に検索範囲を日時変数で用意します。
日付の範囲はフローによって異なりますが、
今回の例では現在日時の前日~30日前を条件にします。


「現在の日時を取得する」で「現在の日付のみ」取得します。


次に「加算する日時」を二つ設置して前日と30日前の日付の変数を作成します。(生成する変数名は任意)
| 項目 | 前日 | 30日前 |
|---|---|---|
| 日時 | %CurrentDateTime% | %CurrentDateTime% |
| 加算 | -1 | -30 |
| 時間単位 | 日 | 日 |
| 生成された変数の名前 | %ToDate% | %FromDate% |




次にFor eachを設置し、反復を行う値に%RetrievedEmails%を指定します。
生成された変数の名前を%CurrentMail%に変更していますが任意です。


次に「テキストをdatetime に変換」アクションを設置します。


変換するテキストに「%CurrentMail.Date%」(中身は日付ですが、テキストに自動変換されます)
生成された変数にMailDateを指定します。(変数名は任意)




「If」 のオプションは次のように設定します。
| 項目 | 設定値 |
|---|---|
| 最初のオペランド | %FromDate <= MailDate AND MailDate <= ToDate% |
| 演算子 | と等しい(=) |
| 2番目のオペランド | %True% |


最後に「If」 の中に条件に合致する場合に実施するアクションを設置すれば完了です。


Power Automate Desktopを「最短」で習得したい方へ
「Webで情報を探す時間がもったいない」と感じていませんか
当サイトの人気記事を体系的に整理し、一冊の電子書籍にまとめました 。


ページをめくるだけで、基礎から応用まで階段を登るようにスキルアップできます。
オフラインでも読めるため、通勤時間や移動中の学習にも最適です。
【本書で学べること】
- 基本操作とフローの作成手順
- Excel、Outlook、Webブラウザの自動化 * 実務で必須のエラー処理と頻出テクニック
Kindle Unlimited会員なら追加料金なし(0円)でお読みいただけます。