メール取得処理のフィルタ設定について

お世話になっております。

Outlookのアカウントからメール一覧を取得し、エクセルに結果を記録する処理を作成しています。
GetOutlookMailMessagesを使って「一覧の取得→エクセルに記録」までは実装完了したのですが、Propertiesで設定したフィルタがうまく動作せず、困っています。

アクティビティ
UiPath.Mail.Outlook.Activities.GetOutlookMailMessages

【フィルタ要件】

  • 特定のフォルダの本日の受信メーのみを取得したい。(未読、既読問わず)

【フィルタ設定】

  • MailFolder:「受信トレイ\xxxxx」のようにフォルダ指定。想定通り動作。
  • Filter:「“'”+now.ToString(“MM/dd/yyyy”) + “’ <= [ReceivedTime] AND [ReceivedTime] <= '”+now.ToString(“MM/dd/yyyy”) + “'”」のように設定
  • Top:入力必須のため、とりあえず「200」と入力。

【結果】
1/30に処理実行すると、

  • 「1/30 AM7:55」以前のメールのみ取得される:想定外。1/30 AM7:55以降に受信済みのメールも取得できる想定だが取得できない。
  • 「1/29」以前のメールも受信:想定外。1/30のメールのみ取得できる想定。
  • 取得メール件数は200件:想定外。1/30のメールは200件未満のため。

上記の通り、「Filter」と「Top」の設定がうまく効いていないような動作をします。
(正確に言うと、Filterは中途半端に効いている、総取得件数はFilterの結果ではなくTopの入力件数に引っ張られているように見える。)

ご存じであれば、正しい設定方法について教えていただきたいと考えています。
よろしくお願い足します。

自己解決しました。
タイムゾーンを考慮したフィルタリングが必要でした。
解決方法を記載します。

【DateTime変数「WorkDate」を初期化】
DateTime.ParseExact(now.ToString(“dd/MM/yyyy”)+" 09:00:00 AM", “dd/MM/yyyy HH:mm:ss tt”, Nothing)
※タイムゾーンが日本のため時間を「+09:00:00」で初期化。

【WorkDateを使いFIlter設定】
“[ReceivedTime] >= '”+WorkDate.ToUniversalTime.AddHours(0).ToString(“dd/MM/yyyy HH:mm”)+“’ AND [ReceivedTime] <= '”+WorkDate.ToUniversalTime.AddHours(24).ToString(“dd/MM/yyyy HH:mm”) +“'”

1 Like

上記の方法を使用される場合は、now ではなく DateTime.UtcNowを用いた方が良いかもしれません。

現在の環境では、おそらく now は DateTime.UtcNowと同じ値を返しているのだと推察いたします。しかしながら、now は実行環境のタイムゾーン等に準拠して値が変動する可能性があることから、別の実行環境において想定通りの結果を返さないといったことが考えられます。

いかなる実行環境においても協定世界時(UTC)を取得させる為には、DateTime.UtcNow を用いておいておいた方が無難かもしれません。

《補足事項》

  • 「日本時間における、本日の受信メール情報を取得」という仕様の場合は上記で問題ないはずですが、「現地時間(日本と異なるタイムゾーンの地域も含む)における、指定日付の受信メール情報を取得」という仕様の場合は、nowを用いた別の方法を考える必要があります
  • フィルタ設定「[ReceivedTime] <= ‘“+WorkDate~」について、「[ReceivedTime] < ‘”+WorkDate~」に修正頂いた方が良いかもしれません。(翌日0:00に受信したメールも対象となってしまう為)
2 Likes

アドバイスありがとうございます!

なるほど、実行環境に依存せずUTCで日時取得するには、UtcNowを使えばいいのですね。
試しに実装済み処理をUtcNowに書き換えたところ、正常に動作しました。
(ちなみに、いま開発中の処理の実行環境は日本を想定しています。)

>「[ReceivedTime] < ‘"+WorkDate~」に修正頂いた方が良いかもしれません。
ご指摘ありがとうございます。修正しました。
超基本的なミス。。(笑)

今週からUiPathを使い始めたのですが、使用把握がなかなか難しいですね。
不明点があれば、今後も当フォーラムを活用させていただきます。
引き続きよろしくお願いいたします。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.