← 手順一覧へ戻る
Power Automate Desktopメール中級よく使う

受信メールの本文をExcelへ1行ずつ記録する

Outlookのテスト用フォルダーからメールを取り出し、送信日時・差出人・件名・本文をExcelへ追記します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • 従来のOutlook for Windowsが必要です。新しいOutlookはデスクトップのOutlookアクションに対応していません。
  • 受信本文は機密情報を含む場合があります。保存先を保護し、Excelのセル上限(32767文字)を超える本文は別ファイル化が必要です。
  • 再実行は同じメールを重複記録します。業務利用ではメッセージ識別子を保存して重複チェックするか、保存成功後だけ処理済みフォルダーへ移す設計を追加します。
  • Dateは送信日時です。受信日時と同じではありません。本文はBodyTextでプレーンテキストとして取得し、HTML形式のBodyと区別します。

1使うアクション

  1. アクション 1Excel の起動
  2. アクション 2アクティブな Excel ワークシートを設定する
  3. アクション 3Outlook を起動します
  4. アクション 4Outlook からメール メッセージを取得します
  5. アクション 5For each%RetrievedEmails% → %CurrentMail%
  6. アクション 6Excel ワークシートから列における最初の空の行を取得ループ内
  7. アクション 7Excel ワークシートに書き込むA・B・C・Dの4回。末尾のEndまでがループ
  8. アクション 8EndFor eachの終わり。ここまでがメールごとの処理
  9. アクション 9Excel を閉じる
  10. アクション 10Outlook を閉じます

表で見る入力と処理結果

架空データ

テスト用フォルダーのメール2件を、Logシートの空いている行へ4列ずつ追記します。

Desktop:Excelブック/ワークシート
Outlookの記録テストフォルダー → C:\Work\mail-log.xlsx/Log

以下は手順に沿った期待値です。実際のPower Automate・Excel環境で実行して確認した結果ではありません。セルや行の着目箇所には「●」を付けています。

取得元:架空のメール2件

%RetrievedEmails%がこの順で取得された例です。日時はDateの送信日時で、受信日時ではありません。
取得順Date:送信日時From:差出人Subject:件名BodyText:本文
12026/10/01 09:00test1@example.com資料の確認資料を確認しました。
22026/10/01 09:30test2@example.com納期の確認納期を教えてください。
↓ 処理する行・列/設定

LogのA列で最初の空行を%FirstFreeRow%へ取得。同じ行のA~D列へ%CurrentMail.Date%、%CurrentMail.From%、%CurrentMail.Subject%、%CurrentMail.BodyText%を順に書きます。

処理前:Logは見出しだけ

A1:D1は送信日時・差出人・件名・本文の見出し。A2:D3は空欄なので、最初の%FirstFreeRow%は2です。
行A:送信日時B:差出人C:件名D:本文
2● ● ● ●
3

追記後:メール1件がExcelの1行

A1:D1の見出しを残し、A2:D3へ2件を記録する想定例。1件目の書き込み後に空行を探すと3になります。
行A:送信日時B:差出人C:件名D:本文
2● 2026/10/01 09:00● test1@example.com● 資料の確認● 資料を確認しました。
3● 2026/10/01 09:30● test2@example.com● 納期の確認● 納期を教えてください。
結果の見方

1件目は2行目、2件目は3行目へ追記します。本文はD列の1セルに入り、ループ終了後にブックを保存します。

  • 氏名・メールアドレス・本文・日時は架空です。日時の見た目はExcelの表示形式で変わります。
  • 途中にA列の空白があると、その行が追記先になり得ます。A列は連続して記録してください。
  • 従来のOutlook for Windowsが必要です。新しいOutlookはこのアクションに対応しません。
  • 再実行すると同じメールを重複記録します。実運用では識別子による重複確認などを追加します。
  • 本文は機密情報を含み得ます。保存先を保護し、32,767文字を超える本文は別ファイル化してください。

図で見る処理のイメージ

概念図

Outlookのテスト用フォルダーからメールを取り出し、送信日時・差出人・件名・本文をExcelへ追記します。

  1. 受信データ

    テストフォルダーのメール2件

  2. 1件ずつ

    空行を探して4列へ記録

  3. 記録後

    Excelにメール2行を追加

  4. 保存

    ブック保存後に終了

結果の例

本文文字列を1つのセルへ書き込む例です。

図は処理の流れを示した例です。実際の画面や実行結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する5ステップの設定と確認方法
  1. 1

    C:\Work\mail-log.xlsx のLogシートに、A1:D1を「送信日時・差出人・件名・本文」として準備します。起動後 %ExcelInstance% のLogをアクティブにします。

  2. 2

    Outlookを起動して %OutlookInstance% にします。アカウントと対象フォルダーを指定し、専用の「記録テスト」フォルダーのメールを取得します。取得時の既読化はオフ、結果は %RetrievedEmails% にします。

  3. 3

    For eachで %CurrentMail% を受け取り、ExcelのA列の最初の空行を %FirstFreeRow% にします。A列に途中の空白を作らないようにします。

  4. 4

    同じ行のAへ %CurrentMail.Date%、Bへ %CurrentMail.From%、Cへ %CurrentMail.Subject%、Dへ %CurrentMail.BodyText% を、4つの書き込みアクションで指定します。

  5. 5

    For eachのEndの後にExcelを保存して閉じます。最後に、このフローで起動したOutlookを閉じます。

Microsoft公式ページで確認する