この記事でわかること。
目次
PADでExcel表をメールに張り付ける方法は?
以前の記事でExcelをメールに添付する方法を紹介しました。しかし、メール本文にExcelの表データを挿入したいときもあるかと思います。
あわせて読みたい
【PAD】複数のファイルを添付してメールを送信する! この記事では、Power Automate for Desktop(以下:PAD)で、特定のフォルダ内の複数のファイルを添付してメールを送信する方法について解説します。 【作成するPower A…
Datatable(ExcelData)型変数をそのままメールに張り付けてもダメでした。
▲Power Automate DatatableでExcelを読み込むとDatatable型の変数が生成されます。まず思いつくのはDatatableを直接メール本文に挿入する方法ですが、この方法では表組みにはなりません。もちろんHTML形式のメールとして送信しています。
(解決策)DatatableからHTMLテーブルを作成します。
一つの方法として、Datatableデータをもとに、HTMLタグを使ってHTMLテーブルを表現する方法を思いつきました。HTMLテーブルは下図のように<table>タグなどを使って表現します。
HTMLがよくわかりません!
HTMLわからないという方は下記のサルワカさんの記事がわかりやすいです。HTMLを全部理解するのは大変ですが下記の記事だけ読めばとりあえずHTMLで表組する方法はなんとなくわかるかと思います。
サルワカ | サルでも分かる図解説…
表(table)の作り方と装飾の変え方【HTML&CSS】 HTMLのtableの使い方をまとめました。セルを結合する方法やCSSでデザインを変える方法(隙間や幅、枠線)まで解説しています。
Power Automate Datatableフローの作成手順
作成するフローの完成図
図は作成するフローの完成図です。使用したアクションは16個です。
フロー作成手順
STEP
使用するExcelファイルとゴール確認をします。
今回使用するのはこちらのダミーデータが表形式で記録されたExcelデータです。この表をメール本文に挿入してメール送信することを今回のゴールとします。
STEP
Excelを読み込むフローを作成します。
▲Excelを読み込む際のおきまりのアクションを追加します。(3行目まで)
個々のアクションの詳しい解説は下記の記事で紹介していますのでよくわからない方はそちらをご覧ください。
あわせて読みたい
【PAD】読み込んだExcel表を1行ずつループで取り出す方法の解説 この記事ではPower Automate for desktopでExcelを読み込んだ時に生成されるDatatable型変数をループで1行ずつ取り出す方法について学習します。 【前回のおさらい】 前…
STEP
For Eachアクションを追加します。
- 反復処理を行う値:%ExcelData%
- 保存先:%rowData%
このアクションを挿入すると「End」アクションも自動的に挿入されます。
STEP
For Eachアクションを追加します。(2個目)
- 反復処理を行う値:%rowData%
- 保存先:%cellData%
このアクションを挿入すると「End」アクションも自動的に挿入されます。
STEP
「変数の設定」アクションを追加します。
- 設定:%HtmlTableRow%
- 宛先:別記
すべてのセルのデータを「<td>セルデータ</td>」のようにtdタグを付けてます。
STEP
「変数の設定」アクションを追加します。
- 設定:%HtmlTable%
- 宛先:別記
行ごとのデータに「<tr>セルデータ</tr>」のようにtrタグを付けてます。
STEP
「変数の設定」アクションを追加します。
- 設定:%HtmlTableRow%
- 宛先:%””%
行データを入れる変数HtmlTableRowを1行ごと処理がおわるごとに一旦空っぽにしてます。%%で””(空文字列)を囲んで挿入すると空っぽにできます。
STEP
「For each」アクションを追加します。
- 反復処理を行う値:%ExcelData.Columns%
- 保存先:%header%
%ExcelData.Columns%はDatatableのプロパティでヘッダー(列名)を取得することができます。
STEP
「変数の設定」アクションを追加します。
ちょっとわかりずらいかと思いますが、HTMLテーブルをメールに渡す場合、CSSで装飾しておかないと表の枠線ですら描画してくれないのでwidth(表の幅)やBorder(枠線の太さ)、bgcolor(表の背景色)を指定しておかなければいけません。
例えばwidth=”100%”と指定するとき、PADでは文字列としてダブルクォーテーションを使用するときは\"100%\"のようにダブルクォーテーションの前にバックスラッシュ(あるいは¥マーク)を入力する必要があります。
ダブルクォーテーションを文字列として使うときはバックスラッシュを使う!
STEP
「Outlookを起動します」アクションを追加します。
STEP
「Outlookからのメールメッセージの送信」アクションを追加します。
- Outlookインスタンス:%OutlookInstance%
- アカウント:メールアドレスを入力します。
- メッセージの送信元:アカウント
- 宛先:宛先メールアドレスを入力します。複数ある場合はセミコロンで区切ります。
- 件名:テストメールです。
- 本文:別記
- 本文はHTMLです:チェックオン
かならず「本文はHTMLです」のチェックをオンにしましょう。
〇〇株式会社 <Br> 山田 様 <Br> <Br> いつもお世話になっております! <Br> ダミーデータを送信します。何卒宜しくお願いいたします。 <Br> <Br> %HtmlTable% <Br> <Br> 以上▲メール本文はこちらの内容にしました。
STEP
フロー完成+テスト実行
フローを実行すると表が挿入されたメールを確認できるかと思います。テストで自分自身のアドレスに送ってみてください。
表の背景色を変更したいときは?
tableタグに使っているbgcolorなどのパラメータを調整してみてください。
Robinソースコード
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\user\\Desktop\\dummydata.xlsx''' Visible: True ReadOnly: True Instance=> ExcelInstance Excel.ReadFromExcel.ReadAllCells Instance: ExcelInstance ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData Excel.CloseExcel.Close Instance: ExcelInstance LOOP FOREACH rowData IN ExcelData LOOP FOREACH cellData IN rowData SET HtmlTableRow TO HtmlTableRow + '<td>' + cellData + '</td>' END SET HtmlTable TO HtmlTable + '<tr>' + HtmlTableRow + '</tr>' SET HtmlTableRow TO $'''%''%''' END LOOP FOREACH header IN ExcelData.Columns SET HtmlTableHeader TO HtmlTableHeader + '<th>' + header + '</th>' END SET HtmlTable TO '<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"1\" >' + '<thead><tr bgcolor=\"#eeeeee\">' + HtmlTableHeader + '</tr></thead>' + HtmlTable + '</table>' Outlook.Launch Instance=> OutlookInstance Outlook.SendEmailThroughOutlook.SendEmail Instance: OutlookInstance Account: `` SendTo: `` Subject: $'''テストメールです!''' Body: $'''〇〇株式会社 <Br> 山田 様 <Br> <Br> いつもお世話になっております! <Br> ダミーデータを送信します。何卒宜しくお願いいたします。 <Br> <Br> %HtmlTable% <Br> <Br> 以上''' IsBodyHtml: True▲今回作成したフローのRobinソースコードです。Power Automate for desktopのフローデザイナーにこのまま貼り付けるとここで作成したフローを再現することができます。再利用するときはメールアドレスやExcelファイルなどのパラメータを調整して作成してください。
Excelの表を抽出してからメールに挿入したい。
あわせて読みたい
Excelを読み込んだ時に生成されるDatatableを加工する方法! この記事ではExcelを読み込んだ時に生成されるDatatableを加工する方法について学習します。 【Datatableを加工する方法】 STEPゴールを確認します。 C:\Users\user\Des…
▲Excel表を挿入するときに、Excel表をそのまま挿入するのではなく行のフィルタをするときは上の記事が参考になるかと思います。
関連記事
期間でメールを抽出する方法
PADでOutlookから期間を指定してメールを取得する方法 この記事ではPower Automate for desktopを使ってOutlookメールを期間していして取得する方法について学習します! 【「Outlookからメールメッセージを取得します」アク…
PADでOutlookマクロを実行する方法
Power Automate DesktopからOutlookマクロを起動する方法! Power Automate Desktop(以下:PAD)からOutlookマクロを実行する場合、専用のアクションが用意されていないため少し工夫する必要がありました。 この記事では、「アプ…
メール本文に画像を埋め込む方法
【簡単】メールやTeamsの本文中にローカルの画像ファイルを挿入する方法! この記事でわかること Power Automate for desktop(PAD)のBase64アクションの概要PADのBase64アクションを使ってメール本文にローカル画像を埋め込む方法Base64につい…
まとめ
以上、Excel表データをメールに挿入する方法についてご紹介しました!
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
Power AutomateをKindleで学びたい方はコチラ
¥2,200 (2022/11/22 08:56時点 | Amazon調べ)
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
¥2,508 (2022/11/22 08:56時点 | Amazon調べ)
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
¥2,750 (2022/11/22 08:56時点 | Amazon調べ)
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
Power Automateを動画で学びたい方はコチラ
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。