Power Automate Desktop 受信メールの内容をExcelブックに1行ずつ記録

2026年3月16日

English version.

はじめに

本記事では、受信したメールの情報(件名、日時、本文、送信元アドレスなど)を抽出し、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 からメール メッセージを取得します」設置しています。

ここではメールのアカウントとメールの抽出条件(件名、本文、メールアドレスなど)を指定します。

メールの抽出条件は設定しなくても動作しますが、メールの処理量が非常に多くなってしまうため、抽出条件も検討することを推奨します。

設定の詳細は各アクションの情報を確認してください。

なお、これらのメール抽出アクションでは日付をフィルターに出来ません。

もし日付を抽出条件にしたい場合は、この方法と組み合わせます。

Microsoft Power Automate Desktop の「Outlook からメール メッセージを取得」アクションの設定画面を解説した図解画像です。効率的な自動化のために重要な「フィルター設定」を中心に説明されています。

画像の詳細説明
各設定項目について、赤枠や吹き出しで以下のポイントが解説されています。

アカウント: 吹き出しで「設定必須。Outlookの設定名。メールアドレスとなることが多い」と説明されています。

メール フォルダー / 取得: 吹き出しで「設定必須。取得するメールが保存されているフォルダー名。『受信トレイ』や『Inbox』が多い」と説明されています。

フィルター項目(赤枠): 「送信者が次を含む」「宛先が次を含む」「本文に次が含まれています」「件名に次が含まれています」の 4 項目が赤枠で囲まれており、吹き出しで「設定推奨。未設定だとメールの処理量が非常に多くなる」と注意喚起されています。

既読としてマークします: オン(有効)に設定されています。

添付ファイル: 「添付ファイルを保存しません」が選択されています。

生成された変数: 取得結果がリスト変数 %RetrievedEmails% に格納されることが示されています。
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円)でお読みいただけます。

関連記事

実用例の記事一覧

Excelの記事一覧