「Outlook メール メッセージを取得」アクティビティのフィルタ複数条件について

「Outlook メール メッセージを取得」アクティビティについて公式ドキュメントを見ると下記のように記載されています

■1 時間以内に受信したすべてのメール メッセージ
 "[ReceivedTime] >= '" + DateTime.Now.AddHours(-1).ToString("MM/dd/yyyy HH:mm tt") + "'"

■件名に「business analyst」という文字列を含むすべてのメール メッセージ 
"@SQL=""urn:schemas:httpmail:subject"" like '%business analyst%'"

『件名に「抽出用テストメッセージ」という文字を含んでおり、1時間以内に受信したもの』という条件にしたいのですが、ANDで結合してもうまくいきません。
どのように記述すればいいかを教えていただけないでしょうか。

なお、
“[ReceivedTime] >= '” + DateTime.Now.AddHours(-1).ToString(“MM/dd/yyyy HH:mm tt”) + “'”

“@SQL=”“urn:schemas:httpmail:subject”" LIKE ‘%抽出用テストメッセージ%’"

の個別で指定した場合はそれぞれ正しく抽出されますが、ANDで結合すると上手くいきません

@dai_y,

Try this filter

"@SQL=(""urn:schemas:httpmail:subject"" LIKE '%test message for extraction%') AND ([ReceivedTime] >= '" + DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm") + "')"

resultString = String.Join(ControlChars.NewLine,
“01 abc02 cde”.Split(" “c).
Aggregate(”“, Function(acc, s) If(acc <> “” AndAlso Char.IsDigit(s(0)), acc & “|” & s, acc & s)).
Split(”|"c))

こんにちは

異なる形式(DASLとJET)のフィルター式はAND等で連結することができません。
そのため例えば下記のようにDASL構文に統一する必要があると思います。

"@SQL= urn:schemas:httpmail:datereceived >= '"+ DateTime.Now.AddHours(-1).ToString("yyyy/MM/dd HH:mm")+"' AND  urn:schemas:httpmail:subject like '%business analyst%'"

回答ありがとうございます
試したところ下記のエラーが発生してしまいました

System.Runtime.InteropServices.COMException: 条件を解析できません。 “@SQL=(“urn:schemas:httpmail:subject” LIK…” エラー。 at Microsoft.Office.Interop.Outlook._Items.Find(String Filter)

すみません、私が詳しくないため
教えていただいた内容をどのように使えばよいのかわかりませんでした。

試してみたところエラーなどは発生したかったのですが、取得出来たメールが0件になってしまいました

原因の切り分けのために、それぞれの条件を単独で適用(ANDでつながず単独で)したときにどのようになるか試せますでしょうか?
一方が想定外の動作であれば、そちらの式の見直しが必要になります。

ご返信いただきありがとうございます。
分割して確認したところ

①データ取れず
“@SQL=urn:schemas:httpmail:datereceived >= '” + DateTime.Now.AddHours(-1).ToString(“yyyy/MM/dd HH:mm”) + “'”

②データ取得可能
“@SQL=urn:schemas:httpmail:subject LIKE ‘%抽出用テストメッセージ%’”

となりました。
もし何かわかりましたら幸いです。

こんにちは

DASLの時刻評価がUTCベースになっていると思いますので、Nowの代わりにUTCNowを使ってみてもらえますょうか?

1 Like

ありがとうございます
“@SQL= urn:schemas:httpmail:datereceived >= '”+ DateTime.UtcNow.AddHours(-1).ToString(“yyyy/MM/dd HH:mm”) +“’ AND urn:schemas:httpmail:subject LIKE ‘%抽出用テストメッセージ%’”

記述にしたところ無事動きました

早急なご返答をいただきとても助かりました。
ありがとうございました。

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