Power Automate Desktop 受信メールの内容をExcelブックに1行ずつ記録
はじめに
本記事では、受信したメールの情報(件名、日時、本文、送信元アドレスなど)を抽出し、Excelブックへ自動的に記録するフローの構築手順を解説します。
なお、本フローは指定したタイミングでの実行を前提としており、手作業による転記を排して正確なデータ蓄積を支援することを目的としています。


フローの全体像
Outlook用


Outlook以外


Robin言語(コピー&ペースト用)
このコードは、Power Automate Desktopにコピー&ペーストし、変更を加えれば利用可能です。
変更箇所は後述します。
Outlook用
Outlook.Launch Instance=> OutlookInstance
Outlook.RetrieveEmailMessages.RetrieveEmails Instance: OutlookInstance Account: $'''変更してください''' MailFolder: $'''Inbox''' EmailsToRetrieve: Outlook.RetrieveMessagesMode.All MarkAsRead: False ReadBodyAsHtml: False Messages=> RetrievedEmails
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\mail.xlsx''' Visible: False ReadOnly: False Instance=> ExcelInstance
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
SET Counter TO FirstFreeRow
LOOP FOREACH CurrentItem IN RetrievedEmails
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Date Column: 1 Row: Counter
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Subject Column: 2 Row: Counter
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Body Column: 3 Row: Counter
ON ERROR
END
Variables.IncreaseVariable Value: Counter IncrementValue: 1
END
Excel.CloseExcel.CloseAndSave Instance: ExcelInstance
Outlook.Close Instance: OutlookInstance
Outlook以外
Email.RetrieveEmails.Retrieve IMAPServer: `` Port: 993 EnableSSL: True Username: `` Password: `` AcceptUntrustedCertificates: False MailFolder: `` MailsToRetrieve: Email.RetrieveMessagesMode.All MarkAsRead: True RetrievedEmails=> RetrievedEmails
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\mail.xlsx''' Visible: False ReadOnly: False Instance=> ExcelInstance
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
SET Counter TO FirstFreeRow
LOOP FOREACH CurrentItem IN RetrievedEmails
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Date Column: 1 Row: Counter
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Subject Column: 2 Row: Counter
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Body Column: 3 Row: Counter
ON ERROR
END
Variables.IncreaseVariable Value: Counter IncrementValue: 1
END
Excel.CloseExcel.CloseAndSave Instance: ExcelInstance
フローの説明と変更箇所
変更が必要な個所
まず最初に「メール メッセージの取得」、Outlookの場合、「Outlook を起動します」と「Outlook からメール メッセージを取得します」設置しています。
ここではメールのアカウントとメールの抽出条件(件名、本文、メールアドレスなど)を指定します。
メールの抽出条件は設定しなくても動作しますが、メールの処理量が非常に多くなってしまうため、抽出条件も検討することを推奨します。
設定の詳細は各アクションの情報を確認してください。
- メール メッセージの取得
- Outlook を起動します(このアクションは変更の必要なし)
- Outlook からメール メッセージを取得します
なお、これらのメール抽出アクションでは日付をフィルターに出来ません。
もし日付を抽出条件にしたい場合は、この方法と組み合わせます。




次に「Excelの起動」で書き込み対象のファイルを指定します。
オプションは「読み取り専用として開く」オフ、動作を軽くするために「インスタンスを表示する」オフ推奨です。


変更不要な個所(フローの解説のみ。改修の参考としてください)
「Excel ワークシートから最初の空の列や行を取得」アクションで書き込みの開始行(データがない行)を検索します。
そして「変数の設定」で、カウンター変数を作成します。
カウンター変数の初期値は「Excel ワークシートから最初の空の列や行を取得」アクションが生成する%FreeFirstRow%(データがない最初の行)です。
このようにすることでブックに既にデータがある場合でも、既存データを上書きせずに新規データを追加することが可能になります。


次にFor eachで繰り返し処理を行うために、反復を行う値に%RetrievedEmails%(メール取得アクションが生成する変数)を指定します。
これによりメールの件数分、Excelブックへの書き込み処理を行います。


次にFor eachの中に「Excel ワークシートに書き込み」を記録する情報の数だけ設置しています。


各「Excel ワークシートに書き込み」のオプションは次のように設定します。
| 項目 | 設定値 | 備考 |
|---|---|---|
| 書き込む値 | %CurrentItem.プロパティ% | プロパティはこちら(Outlookの場合)の中から選択します。 記録する代表的な項目は次の通りです。 .Body:メールの本文(HTML メール の場合、タグのまま) .BodyText:メールの本文 (HTMLメールの場合、タグが解釈されます) .Subject:件名 .From:メールの送信者 .To:メールの送信先 .Date:送信日付 本文を要約する場合はブラウザ操作などで生成AIを利用する必要があります。PAD+生成AIによる要約 参考記事 |
| 列 | 書き込む列の番号 | A列を1とした連番 A列であれば1、B列であれば2… |
| 行 | %カウンター変数% | カウンター変数の部分は作成した変数名です。 サンプルではCounterという名前にしていますが、特に理由がなければ維持推奨。 |
For eachの最後に「変数を大きくする」設置してカウンター変数に1足します。


最後に「Excelを閉じる」を設置してExcelブックを閉じて終了です。
オプションの「Excelを閉じる前」は「ドキュメントを保存」に設定する必要があります。


まとめ
本記事では、Power Automate Desktopを用いて受信メールの情報をExcelブックへ自動記録する手順を解説しました。
単なる転記作業の自動化ですが、「最初の空の行を取得」するステップを組み込むことで、既存のリストを壊さずにデータを蓄積し続ける堅牢なフローになります。手作業による転記ミスを排し、常に最新の情報を集約できる環境は、データ分析や業務効率化の大きな一歩となります。
今回ご紹介したフローはあくまで基礎です。ここから特定のキーワードが含まれるメールのみを抽出したり、記録後にファイルを自動でメール送信したりと、業務に合わせて柔軟に拡張してみてください。自動化による「正確なデータ蓄積」が、日々の業務改善の助けとなれば幸いです。
Power Automate Desktopを「最短」で習得したい方へ
「Webで情報を探す時間がもったいない」と感じていませんか
当サイトの人気記事を体系的に整理し、一冊の電子書籍にまとめました 。


ページをめくるだけで、基礎から応用まで階段を登るようにスキルアップできます。
オフラインでも読めるため、通勤時間や移動中の学習にも最適です。
【本書で学べること】
- 基本操作とフローの作成手順
- Excel、Outlook、Webブラウザの自動化 * 実務で必須のエラー処理と頻出テクニック
Kindle Unlimited会員なら追加料金なし(0円)でお読みいただけます。