エクセルで取得したテキストを使用してメールを送信したい

こんにちは。
プログラミング未経験のUiPath初心者から質問をさせていただきます。

エクセルファイルに入力されている、
A列(日付)、C列(会社名)、G列(金額)、N列(備考)
の4つの項目を取得し、メール本文に適用させて送信したいと考えています。

メール本文例↓
(A社)
1/1 1,000円
1/2 1,500円
(B社)
1/2 500円
(C社)
1/1 2,500円 その他
1/4 1,300円
合計5件

例のように、会社毎に記載することが目的なのですが、可能でしょうか?
また、本文下に合計(例の場合は5件)値をだしたいのですが可能でしょうか?

どなたかご教示いただけますと幸いです。
よろしくお願いいたします。

こんにちは

可能です。例えばLINQやDictionary 等を使って会社名でグルーピングします。

現在どのくらいまで出来ていますでしょうか?

1 Like

こんにちは。
ご返信ありがとうございます。

現在は
Excelアプリケーションスコープ:ファイル指定
範囲を読み込み:シート指定
繰り返し(データテーブルの各行)
代入:(日付)(会社名)(金額)(備考)で処理
(↑の代入処理のログ確認とるためにここで文字列を追加書き込みをいれてます)
テキストファイルを読み込み:メールテンプレート指定
Outlookメールメッセージ送信:本文テンプレート指定

と、一旦事前に作成したメールテンプレを取得し送信するところまではできております。

こんにちは

例えばですが、
Dictionary<string,string>型のDictionary変数を用意します。
dict = New Dictionary(Of String,String)

ループ内で

not dict.ContainsKey(CurrentRow("会社名").ToString)

をチェックし、キーが無ければ、会社名を追加します。

dict(CurrentRow("会社名").ToString) = CurrentRow("会社名").ToString+vbCrLf

既存キー有無にかかわらず、当該行を追記します。

dict(CurrentRow("会社名").ToString) = dict(CurrentRow("会社名").ToString)+CurrentRow("日付").ToString+" "+CurrentRow("金額").ToString+" "+CurrentRow("備考").ToString+vbCrLf

以下サンプルです。

Main.xaml (8.9 KB)

data.xlsx (8.7 KB)

1 Like

Yoichiさん
こんにちは!

サンプルを見習って作成しましたら思った通りのものを出力することができました!
本当にありがとうございます!

会社名に〈カッコ〉をつけたいのですが、
if内のThenにいれた代入右辺ですとエラーになってしまいます。
CurrentRow+“<”+(“搬入先略称”)+“>”+.ToString+vbCrLf

別処理をする必要がありますでしょうか?

また、出力する際の下記内容が何をどう指していうのかが全く分からないです。。。
String.Join(vbcrlf,dict.Select(Function(d) d.Value))

お手数ですがご教示願えますでしょうか?

これは手を抜いて(?)ラムダ式使っていますので、もしアクティビティを使うなら
以下のような感じになるかと思います。

1 Like

Yoichiさん

ありがとうございます。
このへんは実践していくほかなさそうですね。。

先ほどの投稿を追加修正していた内容です↓

会社名に〈カッコ〉をつけたいのですが、
if内のThenにいれた代入右辺ですとエラーになってしまいます。
CurrentRow+“<”+(“搬入先略称”)+“>”+.ToString+vbCrLf

お手数ですがこちらもご教示いただきたいです。
よろしくお願いいたします。

こんにちは

dict(CurrentRow(“会社名”).ToString) = “<”+CurrentRow(“会社名”).ToString+“>”+vbCrLf

になるかと思います。

1 Like

Yoichiさん

早速の回答ありがとうございます!
問題なく出力することができました!

引き続きで大変申し訳ないのですが、
今回出力したリストを使用してメールを作成することが目的です。

出力した合計値は出力することができました。
→DT変数.Rows.Count.ToString

またReplaceによってひな形に置換することもできました。
ひな形変数.Replace("#1", リスト変数).Replace("#2", 合計値変数).Replace("#3", リスト内日付変数)

ひな形イメージ↓

株式会社OO
OO様

お世話になっております。

~~~【#3(リスト内の日付)】~~。

【#1(リスト)】

計【#2(合計値)】です。

置換は成功しているようなのですが、
#1のりすと表示が複数の会社毎(テスト上ですと本来2社)になるはずが、
メール本文には1社(該当社の件数はあっています)、
メッセージログで確認したところ2社表示とこちらは正しく出力されています。

何が原因なのでしょうか?

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