最初にマッチしたURLを取得する方法

メール本文にURLが2つ記載してあり、1つめのURLを取得するためにメール本文取得などをここまでのフローで完了してきました。
maches変数にメールから取得したURLを格納まではできたのですが、1つ目を取得するために設定したmaches(0).Valueを機能させる方法がわからず
この使い方ではなくとも、別のやり方でもいいので最初にマッチしたURLを取得するために記載する条件式を教えていただきたいです。
よろしくお願いいたします。

実現したいことが良くわかりませんが、代入アクティビティで

fullURL = maches(0).Value

ということでしょうか。

その通りです。現在このようにしてfullURLにてURLを取得しておりますが、fullURLの下にfullURL = maches(0).Valueを追加する形でよろしいのでしょうか?

currentMatchはどこから出てきましたでしょうか?
またその中身はどのようになっていますか?URLなら単独で利用できると思います。
ダミーでも良いので、具体的な中身を共有いただいた方が良いかと思います。

item_check.xaml (358.1 KB)
ご確認よろしくお願い致します。

xamlではなく、変数の中身を共有可能でしょうか?

すみません。見えているものだと思っておりました。
以下になります

※lstEmails,Resultは使用しておりません。

変数の型情報ではなく、実行時にCurrentMatch.Value がどのような値を返すかが欲しかったのですが、正規表現のパターンから MT-数字8桁 が中身ということであっていますか?

これとbaseURLの関係性はどのようになっていますでしょうか?
最終的に必要なURLはどのようなものになりますでしょうか?

ブラウザーを開くとこでブレークを貼った際にはこのようになっています。
なのでYoichiさんの認識の通りです。

baseURLとの関係性は、MT-01234567のみだと、URLとして開けず(作る前は開けるものだと思っていた)、httpsからMT~に入る前までの文字列は固定なので、URLとして開けるような状態をbeseURLで作り,baseURL+firstURL=fullURL
これでようやくURLとして開ける状態が作れております。

ちなみにmachesはこのように6つ返ってきており、メールは1つなので本文から取得できるURLは最大でも2つしかないのに6つあることが謎にはなっております、、、(1つ目を取得する方法が作成出来れば解決するのかなと思い現状にたどり着きました。)

最終的に必要なものになるfullURLの中身はこれです。
メールで取得する内容ごとにMT-8桁の数字のみが変わっていく形になります
(baseURLは取得するメールが変わっても常に固定)

上記が要件であれば、現状の

fullURL = String.Concat(baseURL,currentMatch.Value)

で問題ないと思います。
今何が問題となっていますでしょうか?

先程2つ目で少し説明した点になってくるのですが、現状ブレークを貼らずに実行するとURLを6つ開いてしまう(新規タブで6つではなく6個分タスクとして開いてしまう)のが問題です。

条件分岐としてこの様に指定し、この条件に沿ってループするのですが、これに当てはまっているメールがそもそも1件しかないのになぜか6回新規タスクとしてURLが立ち上がっているため、何が原因なのか分からず、1つ目のURLを開くという指定ができていないのでは?という視点にたどり着いて今に至ります。

元よりマッチしたものの中の最初の一つが必要なのであれば「最初の一致」プロパティの出力を使えば良いと思います。

6つのマッチが意図せぬものであるとことですが、それは元の本文データがどのような内容になっているかがわからないと、何とも言えないところになります。

1 Like

ありがとうございます。
image
image

本文データとしてはこの様にURLが2つあり、同じURLの見た目はしているんですが、開くと中身は違って開きたいのは処理画面URL(本文中最初のURL)となっております。

最初の一致を使う場合、今ある【一致するパターンを探す】アクティビティをもう一つ増やすイメージになるのでしょうか?それとも今あるアクティビティの設置場所を変えるんでしょうか?

見た目ではなく、取得した文字列がどのようになっているかで評価ください。
もし共有可能であれば、その文字列の中身を共有いただければと思います。

最初の一致を使う場合、今ある【一致するパターンを探す】アクティビティをもう一つ増やすイメージになるのでしょうか?それとも今あるアクティビティの設置場所を変えるんでしょうか?

他のマッチ項目が不要なのであればアクティビティを増やす必要は無く、今あるアクティビティの出力を使用すれば良いかと思います。

1 Like

mailTitle変数の中身になります(メール本文が格納されています)
ご確認お願いいたします。。

上記ですとMT-00079269は6か所あると思われますので、正常な動作と思います。
16行目の https://の部分が本来欲しいURLでしょうか?
そうであって、URLがMT-00079269で終わっているのであれば

正規表現のパターンとして

\bhttps://.*?MT-\d{8}\b

でこのURLが取れると思いますので、一度こちらでお試しください。
(最初の一致プロパティの値を確認してみてください)

ありがとうございます。
16行目が欲しい部分の認識であっております。

最初の一致プロパティにはfullURLを入れるイメージでしょうか?
現在fullURLを定義する前の部分に【一致するパターンを探す】アクティビティを置いているため、定義後の場所に移動すべきですか?

お返事頂ければ幸いです。
よろしくお願いいたします。

変数定義の範囲外にあるなら、変数の範囲を変更するか、アクティビティの場所を移動してその変数を使えるようにしてください。

ありがとうございます。
実行してみたら
fullURL=https://pega-reborn.intra.nitto.com/prweb/PRAuth/app/FIReborn/6hqDBXNvyldKy2LFKvDoRg*/!WorkLinkThread?pyActivity=Work-.Open&Action=Review&HarnessPurpose=Review&InsHandle=NITTO-MDM-WORK%20https://pega-reborn.intra.nitto.com/prweb/PRAuth/sso?pyActivity=@baseclass.RedirectAndRun&ThreadName=WorkLinkThread&bPurgeTargetThread=true&AccessGroupName=MDM:Users&Location=pyActivity%3DWork-.Open%26Action%3DReview%26HarnessPurpose%3DReview%26InsHandle%3DNITTO-MDM-WORK+MT-00079269

となっており、照らし合わせてみたら本来必要な16行目のURLと60行目のURLが合体していました。


正規表現はこの形に修正したのですが、、、