繰り返し処理の出力でメールひな形に代入したい

こんんちは。

繰り返し処理で毎回つまづいてしまうのでこちらで質問させていただければと思います。

事前にメールを送付したい会社を抽出しています。
そこからさらにExcelで作成した宛先リストを使用して複数ある宛先から選出し、
メールを作成したいと考えいています。

現状:
【繰り返し(データテーブルの各行)】処理をして
各項目の出力をしたいのですが表の一番下の項目のみしか反映されません。

例えば、【繰り返し】の本文の一番最初に【メッセージボックス】を配置して
【代入】右辺と同様入力すると、Excelリストに存在する"会社"名がすべて出力されます。

Row.(“会社”).ToString

テスト段階ではリスト(5会社)のうち3つの会社を指定(このワークフローの前段階で出力済み)してメールテンプレートに代入できればと考えています。

ご教示いただければと存じます。
よろしくお願いいたします。

@a.kmni
お疲れ様です。

選んだ会社名だけをメールに入れたいということですか?

[条件分岐 (if)] アクティビティ を使えば行けるはずです。

例えば、入れたい会社は「A, C, E」であればとデータテーブルはそういう形であれば:
image

そのコードで解決出来ます。

もしも、メールボディに入れたいだけ問題になるだと、メールの内容でプレースホルダを入れて、Replaceすればよいと思います:

"Dear <会社名>, lalal lalala alalal allala alala".Replace("<会社名>", Row("会社".ToString))

もしも、自分が問題を理解できませんでしただと教えてください。
どうぞよろしくお願いいたします。

GT_Ropaさん
こんにちは、ご回答ありがとうございます!

私の説明がわかりづらく申し訳ございません。
ご認識の通りで大丈夫かと思います。

このフローの前に複数ある会社の中からメールを送付する会社を抽出しているので
【繰り返しデータテーブルの各行】の上の【代入】右辺をcompanyとしましたがうまくいきませんでした。テスト上メールが3件作成されるのですが、3件とも会社名がどうしてもExcelのリストの一番下の行に入力したテキストのみでてきてしまいます。対象のExcelからリプレイスしたいものは"会社名"と"担当者"と"アドレス"です。

会社の抽出処理↓

代入:companies=
csv_list. AsEnumerable.Select(Function(r)r(“会社”).ToString).Distinct.ToArray>

繰り返しコレクションの各要素:currentitem companies

代入:company=companies


メールテンプレへのリプレイスの式は下記で設定しております。
("日"と"一覧"と"数"は別で抽出済みでリプレイス処理は問題なくできてます)

mail_template.Replace(“#1”, 会社名).Replace(“#2”, 担当者).Replace(“#3”, 日).Replace(“#4”, 一覧).Replace(“#5”, 数)

わかりづらく申し訳ございませんがご教示いただけますと幸いです。

@a.kmni 申し訳ございません。この説明はまだ少し理解できません。

に関してどうやって使いますか?

あとご教示いただきましたフローで試してみたところ、繰り返しの回数が3回になっているようです。(今回宛先リスト5社のうち、3件にメールを送信するテストをしていますがそちらが関係しているのでしょうか)

繰り返しの数は、add_masterデータ テーブルの行数と同じになります。ただし、ifアクティビティで処理されるケースの数は、companies配列のエントリ数と同じになります。
ワークフローは、データ テーブルの現在の行にある会社がcompanies配列にあるかどうかを確認するだけです。 配列で見つかった場合、処理が行われます。 配列に 3 つのレコードが含まれている場合、ifアクティビティ内のフローは 3 回繰り返されます。

申し訳ございません。この説明はまだ少し理解できません。

教えていただいたものですと
【代入】会社名リスト=(“A”,“C”,“E”)
と特定していますが、今回はこの前段階で取得した会社名変数(conpany)で代用してみました。

に関してどうやって使いますか?

記述したとおりです。
希望としては3通のメール宛先についてA社、B社、C社にしたいが
3通ともE社になってしまいます。
ただし宛先リスト内の5社はすべて読み込みはできているようなのですが・・・

繰り返しの数は、add_master データ テーブルの行数と同じになります。ただし、if アクティビティで処理されるケースの数は、companies 配列のエントリ数と同じになります。
ワークフローは、データ テーブルの現在の行にある会社がcompanies 配列にあるかどうかを確認するだけです。 配列で見つかった場合、処理が行われます。 配列に 3 つのレコードが含まれている場合、if アクティビティ内のフローは 3 回繰り返されます。

こちらについては理解できました!ありがとうございます!

@a.kmni

ただし宛先リスト内の5社はすべて読み込みはできているようなのですが・・・

新しいポストに返事しました。ifの中で全部を含めないといけませんです。ifは会社名でフィルターします。
if の中で {A, C, E}
if の外で {A, B, C, D, E}

という状況になります。

1 Like

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