条件分岐の使い方について

UiPath初心者です。
変数:address を検索し、
変数:to送信先 ”推進リーダー名”と一致するものがあるかどうかで分岐させたいです。
以下のエラーが出ましたが、改善点を教えて頂きたくよろしくお願いいたします。

「Contains」メソッドはString型に対して使えるものです。
エラーメッセージから見るに「to送信先」変数はデータテーブル型なのではないでしょうか?

どう改善するかですが、「address」変数を、繰り返し(各行)でループしているのと同じように
「to送信先」をループさせて突合させるとかでしょうか。
もしくは「to送信先」の型を見直せるのであれば、それでも良いと思います。

【追記します】
現状の条件式を見ると、
「to送信先」変数の中に、「address」データテーブルの各行の"推進リーダー名"列が含まれているか?という判定をしようとしているのですが、質問者様の実現したいことは、
「to送信先」の"推進リーダー名"が「address」と一致しているかを確認したいとおっしゃっているように見えます。これはどちらが正しいですか?

1 Like

ありがとうございます。
ご指摘の通り、「to送信先」変数はデータテーブル型です。
Containsはstring型にしか使えないのですね。

「address」には、全員氏名・メールアドレス一覧が入っており、
「to送信先」には、対象者氏名一覧のみが入っています。

氏名が一致した人のみ、アドレスを取って来るという構造を希望しておりました。

「to送信先」の型を見直すとは、変数一覧の変数の型をstringにするだけではないですよね。。
先程、試してみましたが、エラーになりました。

「address」には、全員氏名・メールアドレス一覧が入っており、
「to送信先」には、対象者氏名一覧のみが入っています。

ありがとうございます。「address」はデータテーブル型が良さそうですね。
「to送信先」がなぜデータテーブル型なのかは分かりませんが、(Excelから読み込みをしたからとかでしょうか)List型とかの方が扱いやすいかもしれませんね。

「to送信先」の型を見直すとは、変数一覧の変数の型をstringにするだけではないですよね。。
先程、試してみましたが、エラーになりました。

「to送信先」には複数の情報(文字列)が入っているのでそのまま文字列型にはできないと思います。
どのように「to送信先」を取得しているかにもよりますが、変更可能ならList型に変えるか、
そのままデータテーブル型で実装するなら、繰り返し(各行)を使って、「to送信先」もループさせる、もしくはLinqを使うとかも考えられますが、、

ひとまずどのように「to送信先」を取得しているか教えて頂けますか?

ありがとうございます。
複数の情報が入っているものはそのまま文字列に出来ないのですね。
勉強になります。

こちらのrobotは、
議事録提出督促メール送信用となっております。
下記リストへ提出状況を記載し、提出済→● 未提出→〇
開催日=過去 で、 〇がある人を 「to送信先」の”推進リーダー名” としてリストで取ってきております。
●のみの人へは㏄でメールを送りたく、条件分岐させようとしておりました。

すいません、遅れました。

「to送信先」の”推進リーダー名” としてリストで取ってきております。

この処理は別で存在しており、データテーブル型で取得している認識で正しいでしょうか?

すいません、全体像が見えないため最適なアドバイスが難しい状態です…
簡単なのは、「Address」データテーブルをループしている中で「to送信先」データテーブルをループさせて一致するか確認する方法だと思いますが…

ありがとうございます。
説明が悪く申し訳ございません。
現在の状態を添付します。
左側の! が出ているところが質問させて頂いた箇所になります。
お時間を取らせてしまい申し訳ございませんが
よろしくお願いいたします。
Main.xaml (61.5 KB)

説明が悪く本当に申し訳ございません。
データテーブル①
image
データテーブル②
image

2つのデータテーブルを比較し、
データテーブル①に含まれる宛先をto それ以外をccとしたく
条件分離をしようとしています。

1 Like

添付ファイルありがとうございます。
現在確認しています。
その他の部分でも改修と言いますか、綺麗にした方が良いところがありますが
話が進まなくなるため一旦置いておきます。

説明が悪く本当に申し訳ございません。

こちらこそ、汲み取れず申し訳ないです。
もう少々お待ちください。

@miwa_yamamoto さん

お待たせしました。
2つのデータテーブル(to送信先・address)を比較して、to送信先に含まれる場合と含まれない場合で分ける箇所を作りました。参考にされてください。

分からない所ありましたら、聞いていただければと思います。
(データテーブルを作るためのExcelは頂いた表を参考に作りました。Dataフォルダに入っています。)

20201119.zip (12.6 KB)

1 Like

ロジックについてですが、
①まず予め「宛先リスト」と「CCリスト」(ともにList型)を用意しています。
※メールを送る場合はこのList使って送信すればよいと思います。

②addressデータテーブルを繰り返し(各行)を使用しループします。
③ループ内で条件分岐を使用してto送信先データテーブルに存在するかチェックします。
※条件式に書いてある式は、to送信先テーブルの氏名列は、addressテーブルの氏名列に一致する
ものが含まれているか?といった検索をしています。
④to送信先テーブルに存在する場合、「宛先リスト」にメールアドレス追加
含まれていない場合、「CCリスト」に追加

簡単に言うとこんな感じです。。

1 Like

ご丁寧にありがとうございます。
早速今から確認させて頂きます。
本当にありがとうございます。

参考になれば幸いです。
分からない箇所は聞いてくれたらお答えしますので、お気軽にどうぞ~

1 Like

本当にありがとうございます。
早速質問で、申し訳ないのですが、
ここの部分は、どのような意味になるのでしょうか。
Any の後に氏名 といきなりしていないので何か理由があると思い。。
無知で申し訳ございません。
今後自分で作る際の為、1つずつ勉強していきたく、ご面倒をお掛けしますが教えて頂けませんでしょうか。
image

今後自分で作る際の為、1つずつ勉強していきたく、ご面倒をお掛けしますが教えて頂けませんでしょうか。

とても良い事だと思います。
ここには沢山知識を持っている方がいらっしゃるので、色々質問したら知識がたくさんつくと思います。

本題ですが、この条件式にはLINQと呼ばれる機能を使っています。
解説している人が沢山いるので詳しくは別のサイトを参照して頂きたいところです。
これを理解するのは中々大変だと思いますが…

参考になりそうなサイトだと以下でしょうか。


https://www.atmarkit.co.jp/fdotnet/special/vblinq02/vblinq02_01.html
1 Like

ありがとうございます。
やはり難しい機能が入っていたのですね。
理解するのが大変とのことなので、
まずはこの教えて頂いた箇所をクリアしてから
ゆっくりじっくり読ませて頂きます。
勉強になるサイトまで教えて頂き本当にありがとうございます。

1 Like

@miwa_yamamoto さん

ちなみに問題なく作ろうとされていたフローに組み込めそうですか?
もし、またエラーが出るようでしたらお気軽にご連絡下さい。

1 Like

おはようございます。
気にかけて頂き本当にありがとうございます。
昨日は用事があり定時退社しておりました。
今から続きを行います。
本当にありがとうございます。

1 Like

お疲れ様です。
質問させてください。
CCの宛先を確かめたく、以下の様にしてみたのですが、
ランダムに複数人 ダブリで出てきてしまい、
かなりの数、メッセージボックスで表示されてしまいました。
取り方が悪いのか、私が作る際にミスをしたのか分からなくなってしまいました。

@miwa_yamamoto さん

おはようございます。
いくつか方法はありますが、思いつくのを上げると

①デバックでコレクションの中身を確認する。
ブレークポイントをコレクションに追加において、変数の中身を直接見る。
※例として、昨日お渡ししたプログラムで説明します
・ブレークポイントを設定

・デバックを実行
赤〇を置いているところを通過する度にプログラムが止まるので、
その時点の変数を確認したりできます


※デバックを使えると、開発がとても捗りますのでぜひ習得されてください。

②別途文字列変数を用意して、その文字列に、コレクションに追加している値を文字列結合し
その文字列をメッセージボックス等で確認

他にもありますが、デバックで確認するのが良いと思います。

1 Like