はじめに (対象読者・この記事でわかること)
本稿は、Power Automate Desktop(PAD)を用いて業務自動化を構築しているエンジニアや業務担当者を対象としています。特に「Outlookからメール本文は取得できたのに、送信元(From)アドレスが取得できない」という壁にぶつかった方が対象です。この記事を読むことで、PADの「Outlookメール取得」アクションが返すオブジェクトの構造を理解し、送信元アドレスを取得するための正しいプロパティ指定や代替手段(IMAP取得やメールヘッダー解析)を実装できるようになります。また、実装中に遭遇しやすいエラー・落とし穴とその回避策も併せて紹介します。自動化フローの信頼性向上と、メールベースのワークフローを安定稼働させる第一歩を踏み出すための具体的なガイドです。
前提知識
- Power Automate Desktop の基本操作(フロー作成、変数操作)ができること
- Outlook(デスクトップ版またはExchange Online)でメールの受信・送信が可能であること
- 基本的なプログラミング概念(変数、条件分岐、ループ)に慣れていること
Outlookメール取得における送信元取得の課題と概要
Power Automate Desktop には「Outlookメール取得」アクションがあり、フォルダーや検索条件を指定してメールの一覧を取得できます。取得したメールは「メールオブジェクト」の配列として変数に格納され、各メールオブジェクトはSubject、Body、ReceivedTime などのプロパティを持ちます。しかし、デフォルトの UI では From(送信元)フィールドが表示されず、実際のフローで参照しようとすると空文字やエラーになるケースが報告されています。
この問題の根本原因は、Outlook の COM オブジェクトが返すプロパティと PAD が自動的にマッピングするプロパティが一致していない点です。特に、From プロパティは「MailItem.SenderEmailAddress」または「MailItem.Sender」オブジェクトに格納されており、PAD の「メール取得」アクションはデフォルトで「Sender」だけを取得しません。そのため、送信元アドレスを取得するためには以下のいずれかのアプローチが必要です。
- 「メール取得」アクションの拡張オプションで「SenderEmailAddress」も取得対象に追加
- 取得したメールオブジェクトに対し、Power Automate Desktop の「変数の拡張」機能で「SenderEmailAddress」プロパティを明示的に取得
- Outlook の「IMAP」や「Graph API」を利用し、ヘッダー情報から直接送信元アドレスを取得
本記事では、最も汎用的かつ手軽に実装できる「変数の拡張」手順を中心に解説します。さらに、上記 3 つの代替手段についても概要を示し、環境や要件に応じた選択肢を提供します。
送信元アドレス取得の具体的手順と実装方法
ここからは、Power Automate Desktop で Outlook からメールを取得し、送信元アドレスを正しく取得するためのフローステップを詳細に説明します。実際にフローを構築しながら確認できるよう、スクリーンショットやサンプルコード(PAD の「スクリプト」アクション)を交えて解説します。
ステップ1:メール取得アクションの設定
- アクション追加 →「Outlookメール取得」
- 「フォルダー」欄に取得対象のフォルダー(例:Inbox)を指定
- 「検索条件」欄に必要に応じてフィルタ(未読、特定の件名など)を設定
- 「取得項目」欄で Subject、Body、ReceivedTime に加えて Sender を必ずチェック
- 取得結果を変数 %MailList% に格納
この段階では Sender だけが取得され、メールアドレスは含まれません。次のステップで「SenderEmailAddress」を取得します。
ステップ2:SenderEmailAddress プロパティを拡張して取得
- アクション追加 →「変数の拡張」
- 「対象変数」欄に %MailList% を指定
- 「拡張するプロパティ」欄に SenderEmailAddress と入力
- 結果は同名の配列 %MailList_SenderEmailAddress% に自動で格納されます
この操作により、各メールオブジェクトに対して「SenderEmailAddress」プロパティが追加され、配列として取得できるようになります。
ステップ3:送信元アドレスの利用例
取得した送信元アドレスは、以下のようにループ処理で個別に利用できます。
Plaintext繰り返し (各メール: %MailList% as %mail%) 変数取得: %mail.SenderEmailAddress% → %senderAddress% // 例: ドメイン別に振り分け 条件分岐: %senderAddress% が "example.com" を含む場合 // 何らかの処理 それ以外 // 別処理 終了繰り返し
このサンプルでは、送信元ドメインごとに異なる処理を実行しています。実務では、承認フローや自動返信など、送信者に応じたロジックを組み込むことが可能です。
ハマった点やエラー解決
| 発生した問題 | 原因 | 解決策 |
|---|---|---|
| 取得した %MailList_SenderEmailAddress% が空配列になる | 「送信者が内部ユーザー(Exchange のディスプレイ名のみ)」の場合、SenderEmailAddress が空になることがある | Outlook 側で「送信者のメールアドレスを必ず取得」設定に変更、もしくは Sender オブジェクトから SMTPAddress を取得 |
| 変数拡張時に「プロパティが見つからない」エラー | PAD のバージョンが古く、SenderEmailAddress が未実装 | PAD を最新版にアップデートし、再度試す |
| IMAP で取得したメールのヘッダーが UTF‑8 で文字化け | エンコード指定が不適切 | 「文字列 → エンコード変換」アクションで UTF-8 → Shift_JIS 等に変換 |
代替手段:Graph API・IMAP 利用
-
Microsoft Graph API
-GET /me/messagesでメール一覧取得
- 各メッセージオブジェクトのfrom.emailAddress.addressフィールドが送信元アドレス
- PAD の「HTTPリクエスト」アクションでトークン取得 → API 呼び出し -
IMAP
- PAD の「IMAPメール取得」アクションでヘッダー全体を取得
- 取得した RAW ヘッダーからFrom:行を正規表現で抽出
これらは Outlook のローカル設定に依存せず、クラウド環境でも動作しますが、追加の認証設定やスクリプト記述が必要です。要件に応じて選択してください。
まとめ
本記事では、Power Automate Desktop で Outlook からメールを取得した際に送信元アドレスが取得できない問題について、変数の拡張による SenderEmailAddress の取得手順を中心に解説しました。
- メール取得アクションだけでは送信元アドレスは取得できないことを確認
- 変数の拡張で SenderEmailAddress を追加取得し、配列として利用可能にした
- エラー原因(プロパティ未実装、内部ユーザー)と対策(PAD 更新、Outlook 設定変更)を提示
- Graph API や IMAP といった代替取得手段も併せて紹介
これにより、送信者別の自動処理や承認フローを安定して構築できるようになります。次回は、取得した送信元情報を活用した 自動返信テンプレート生成 の実装例を紹介する予定です。
参考資料
- Microsoft Power Automate Desktop 公式ドキュメント – Outlook メール取得
- Microsoft Graph API – メールの取得
- Power Automate Desktop – 変数の拡張機能解説
- 【書籍】『RPA実践ガイド – Power Automate Desktop 入門』 (技術評論社, 2024)
