特定の条件からメールを取得する方法について

受信トレイのメール欄から以下条件に沿ってメールを取得したいです。

2枚目の様に件名と本文を取得してからスタートだと思っているのですが、
『』のように特定の文字で取得する際どのように繋がっていくのでしょうか?

こんにちは

まず③はOutlookメールメッセージ取得アクティビティのプロパティで設定する必要があります。
①②についてはOutlookメールメッセージ取得アクティビティのフィルターを使うか、繰り返しアクティビティやLINQ等で必要なものを処理するようにします。
繰り返しアクティビティは基本的に一つで十分です。(内部で条件分岐を行い、必要なもののみを処理すれば良いかと思います。)

以下公式ドキュメントも参考になると思います(フィルター等)

回答ありがとうございます。
共有PCにて作成しているため現在試せないのですが、今回でいうとフィルターしたいものが①と②で2つあるため、Outlookメールメッセージ取得アクティビティが2個必要になるんでしょうか?それとも1つのアクティビティ対して複数フィルターをかけることができるんでしょうか?

JET構文、DASL構文ともANDが使えますので、一つのアクティビティで実現します。(異なる構文を組み合わせることはできませんので、その点は注意ください)


書き方としては以上のようなイメージでしょうか?

違います。上記のアクティビティパッケージの説明ページの下方にフィルターの例があるのでこちら参照&実機でお試しください。含まれる条件なのでDASL構文(@SQLで始まる方の構文)が必要かと思います。

ありがとうございます。
このような指定方法があること初めて知ることができました。


自分なりに例を見て書いてみたんですが、これで動かした際エラーがでてしまいました。&でつなげてはいけないんでしょうか、、、

&はVb.netでの文字列結合演算子ですので、DASL構文上の論理積条件とは異なります。

例えば以下の様に記述する必要があります。

"@SQL= urn:schemas:httpmail:subject like '%KEYWORD1%' AND  urn:schemas:httpmail:textdescription like '%KEYWORD2%'"

ありがとうございます。
【登録完了通知】や【品番新規登録】などが記載しているメールは、現時点でRPAを動かす端末に直接届いているわけではなく、転送するしかないのですが、別の人から転送した場合でも適用されますでしょうか?(動作テストがうまくいくか)

差は無いと思いますが、聞くより試した方が早いと思いますよ。

失敗していたのですが、転送確認時に既読になっていたことが原因でした。
無事メッセージボックスでも上手く返ってきました!
大変助かりました!ありがとうございます!

追記で失礼いたします。
このままの流れで outlookメールメッセージを取得アクティビティにて出力しているmsgDat(変数)を使って

msgDat = True で分岐が完了だと思っていたのですが、List型なのでエラーが出てしまいました。型を変更アクティビティを使いboolean型にして以下の様にしてみたのですが型を変更出来ないエラーが出てしまう始末です。。。

条件式の際は基本的にboolean変数のものしか使ったことがないのですが
LIst型のままエラーが出ない条件式を書くことは可能なのでしょうか?

基本的にタイトルから離れる話題は別トピックにいただいた方が良いです。

List型変数の中身が空かどうかを判断するには

varList.Any()

あるいは

varList.Count>0

等が使えると思います。

1 Like

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