メールの宛先をエクセルで作成した一覧から複数とる方法

UiPath初心者です。

エクセルで作成したアドレス帳のアドレスをoutlookの宛先に複数入れる方法を教えていただきたいです。

下記のやり方を試しましたが、必要なメールは送られるんですが、メールアドレスの1文字目が欠けた宛先不明のメールも送るようになってしまい、そこでエラーが出てしまいます。
現状は別のアクティビティとの繋がりで「繰り返し」の中に入れています。

何卒よろしくお願いいたします。

無題

こんにちは

画像からの情報だけですと、問題は確認できないのですが、以下確認できればと思います。

・今回の事象は、一行書き込みアクティビティの時点ですでにアドレスが欠けた状態という
ことでしょうか?
・一行書き込みの一つ上にある代入は何をしているものになりますでしょうか?

変数 メールアドレス送信用 ですが、初期値が空白ではないでしょうか。
もしそうであれば、最終的に中に入るデータが ;~~ と、先頭が;で始まってしまい、それが原因でエラーになっている可能性があります。

メールアドレスを繋げたものを生成したいのであれば、Excel Application Scope内で、 変数 メールアドレス送信用 に次の式を代入してみて下さい。

String.Join(";", メールアドレス.AsEnumerable.Select(Function(r) r(1).ToString).ToArray)

ご回答いただきましてありがとうございます。
お休みだったので返信が遅くなってすみません。

・今回の事象は、一行書き込みアクティビティの時点ですでにアドレスが欠けた状態という
ことでしょうか?
→1人目のアドレスだけ1文字目が欠けた状態です。2人目以降は正常に読み取ります。また、『繰り返し』の中に入れていて、メールの内容別で何通か送られるんですが、2回目の繰り返しの時には1つ目のアドレスの頭から2文字が欠けます。試してないですが、この感じだと3回目の繰り返しでは頭から3文字欠けるんでしょうか・・

・一行書き込みの一つ上にある代入は何をしているものになりますでしょうか?
→下記のスクショの通りです。アドレス帳のスクショも添付いたしました。アドレスを2行目から記入しているので、1行目は含まないように作成したつもりでした・・

無題

何卒よろしくお願いいたします。

こんにちは

実際のデータがどのようになっているかよくわかりませんが、現象からするとこのアクティビティが不要なような気がします。一度無効化して実行してみてはいかがでしょうか?

ご回答いただきましてありがとうございます。
お休みだったので返信が遅くなってすみません。

Excel Application Scope内で、 変数 メールアドレス送信用 に次の式を代入してみて下さい。
→出来ました!メールも送られてロボットも最後のアクティビティまで進むんですが、最後に『条件分岐:値をNullにすることはできません。パラメータ:value』というエラーが出てデバックが完了していないことになってしまいます。

あと、この代入した式の意味も教えていただけませんでしょうか・・。
お手数ですがよろしくお願いいたします。

一度無効化して実行してみてはいかがでしょうか?
→出来ました!メールも送られてロボットも最後のアクティビティまで進みますが、最後に『条件分岐:値をNullにすることはできません。パラメータ:value』という上記同様のエラーが出てデバックが完了していないことになってしまいます。

outlookメール送信アクティビティの宛先に直接アドレスを打つとこのエラーは表示されないのでこのアドレス帳から読み取ってくる部分に問題があるとは思うんですが・・

こんにちは

そのエラーの出ている条件分岐のアクティビティを含めて画面共有またはxamlファイルの共有可能でしょうか?

あと大元の事象ですが、現象からしますと、文字列の初期化が不十分な可能性もございますので
この観点からも確認した方が良いかもしれません。

:arrow_right_hook:テスト.xaml (45.7 KB)

何卒よろしくお願いいたします。

※前半は削除して該当箇所のみ抜粋しましたが、こちらで大丈夫でしょうか?

こんにちは

条件分岐アクティビティの条件欄にある「物件名」がnullのようです。
各シートのA3セルから値を取ってきているようですが、どこかに空欄があるのではないでしょうか?

空欄の時はElseに流れるので良いなら、条件欄を

(not String.IsNullOrEmpty(物件名)) AndAlso item2.ToString.Contains(物件名)

とすれば良いように思えます。

前半を端折ってしまっているのでわかりくいのですが、該当のA3が空欄になることはなく、A1~A22までA列はメールの本文で全て埋まっています。
また、このメールには必ずアタッシュケースというアプリを通して暗号化された添付ファイルが必要なので、elseに流れてはだめなんです・・
その箇所以外にこのフローには問題点がなさそうでしょうか?

こんにちは

デバッグモードで実行するとエラー発生時に左側のローカルパネルで変数の状況が
確認できますので、変数物件名の中身がどうなっているか確認できますでしょうか?
あるいは条件分岐の手前に一行書き出しアクティビティで値を書き出しても良いかと思います。

わかった気がします!
このエクセル(パス1)はロボット起動前は全シート空欄で、端折ってしまっている前半のフローで、あるデータから抜粋して読みとったデータを繋ぎ合わせてメールの本文にして、エクセル(パス1)に内容ごとにシートを分けて貼りつけるという工程を入れているんですが、もともとエクセルに存在する空白のsheet1も「ブックの全シートを取得」で読み取ってしまうので何も貼りつけられていない空欄のA3も読み取ろうとしてしまうようです。
エクセルからシートを全て削除することは出来ないので、シート名一覧からもともとあるsheet1を消すにはどうしたらよいでしょうか?

何度もすみません。

シート名一覧から特定のシートを除外するのではなく、ここで条件分岐のElseを使用したらいいのでしょうか?
全シート分を繰り返しでメール作成して、物件名(A3)が空欄の場合はElseに流れてそれで終了的な・・?

:arrow_right_hook:この意味は、物件名(A3)がNullかエンプティの場合itemをstringにしないということ?でしょうか?その場合そこでロボットは終了ということですか?

こんにちは

物件名がnullの場合、String.IsNullOrEmpty(物件名)がTrueになります。それのnotなので評価式はFalseになります。
その結果条件分岐のElse側に流れます。動作が終了するかはロジックに依存します。繰り返しの最後のitemで、以降に処理がないなら終了すると思います。

出来ました!!!
何度もありがとうございました!
すごく助かりました。

2 Likes