Power Automateでメールの本文を抽出してExcelに転記する方法:情報収集を自動化して業務効率アップ!
「毎日届く特定のメールから、本文に書かれている情報を手作業でExcelにコピー&ペーストするのが面倒だな…」「お客様からの問い合わせメールの内容を自動で記録して、対応漏れを防ぎたい」「Power Automate(パワー オートメイト)を使って、メールの本文から必要な部分だけを取り出して、自動でExcelにまとめることはできないかな?」
こんな風に感じたことはありませんか? 日々の業務で、メールから情報を抽出し、それをExcelに転記する作業は、意外と多くの時間を費やし、入力ミスも発生しやすいものです。特に、定型的な情報が含まれるメール(例えば、日報、問い合わせ、注文確認など)であれば、この作業は完全に自動化できる可能性があります。
Microsoft Power Automateを使えば、プログラミングの知識がなくても、メールの本文から特定の情報を抽出し、それを自動的にExcelファイルに転記する仕組みを簡単に構築できます。これにより、手作業による転記作業から解放され、情報収集の効率と正確性が飛躍的に向上します。
Power Automateで「メール本文抽出・Excel転記」フローを作るってどんなこと?その大きなメリット
Power Automateで「メール本文抽出・Excel転記」フローを作る、とは、特定の条件に合致するメールが受信された際に、そのメールの本文から必要な情報(例えば、お客様の名前、問い合わせ内容、注文番号など)を自動的に抜き出し、その情報をExcelファイル(通常はSharePointやOneDriveに保存されたもの)の特定の行やセルに自動で書き込む仕組みを構築することです。
なぜ「メール本文抽出・Excel転記」を自動化するのか?その具体的なメリット
このフローを自動化することには、たくさんの良い点があります。
- 手作業の削減と時間節約:毎日、毎週、あるいは都度発生するメールからの情報抽出とExcelへの転記作業が完全に自動化されます。これにより、手作業にかかる時間と労力が大幅に削減され、担当者はより戦略的で価値の高い業務に集中できるようになります。
- 入力ミスの削減とデータ品質の向上:手動でのコピー&ペーストや入力作業では、どうしてもタイプミスや転記漏れが発生しがちです。自動化することで、これらの人為的なミスがゼロになり、Excelに転記されるデータの正確性と信頼性が向上します。
- 情報収集のリアルタイム化と迅速な対応:メールが受信されたらすぐに情報がExcelに転記されるため、常に最新の情報がExcelファイルに集約されます。これにより、お客様からの問い合わせや緊急の連絡などに対して、より迅速に状況を把握し、対応を開始できるようになります。
- 業務プロセスの標準化と透明性:情報収集と記録のプロセスが自動化され、常に同じ手順で実行されるため、業務の標準化が図れます。また、Excelファイルを見れば、いつでも最新の情報が確認できるため、情報共有の透明性も高まります。
- データ分析の基盤構築:自動で集約されたExcelデータは、Power BI(パワービーアイ)などのBIツールと連携することで、傾向分析やレポート作成の強力な基盤となります。これにより、ビジネスの意思決定をデータに基づいて行うことが容易になります。
メール本文からの情報抽出の「カギ」:本文の「定型化」
メール本文から情報を正確に抽出するためには、メールの本文が可能な限り「定型化」されていることが非常に重要です。
なぜ「定型化」が必要なのか?
Power Automateは、メール本文全体を一つの長い文字列として扱います。この文字列の中から、特定の情報(例: 氏名、電話番号、問い合わせ内容)を正確に抜き出すためには、その情報が本文中でどのような「目印」や「パターン」で書かれているかをPower Automateに教えてあげる必要があります。
- 例:定型化されたメール本文
【お問い合わせ内容】 氏名:山田 太郎 メールアドレス:yamada.taro@example.com 電話番号:090-1234-5678 お問い合わせ種別:製品について 詳細:〇〇製品の機能について質問があります。このような形式であれば、「氏名:」の次にある文字列、「電話番号:」の次にある文字列、といった形で情報を抽出しやすくなります。
- 非定型なメール本文「山田さんから電話があって、製品の件で質問だって。携帯は090-1234-5678だって言ってたよ。」
このような文章から「山田さんの電話番号」を正確に抜き出すのは、Power Automateにとっては非常に困難です。
定型化されていない場合はどうする?
もし、メール本文が完全に定型化されていない場合でも、工夫次第で抽出できる可能性はあります。
- 特定のキーワードや記号の前後に注目する: 例えば、「お客様番号:[半角数字]」のように、キーワードとデータの間に特定の記号やスペースがある場合。
- 正規表現(Regular Expression)の活用: より複雑なパターン(例: 「郵便番号はXXX-XXXXです」)から情報を抽出したい場合は、正規表現という高度な文字列パターンマッチングの技術を使うことで対応できる場合があります。ただし、これは少し専門的な知識が必要になります。
- AI Builderの活用: Power AutomateのAI Builder機能(有償ライセンスが必要)を利用すると、非定型なテキストから特定の情報を抽出する「エンティティ抽出」モデルをトレーニングできる場合があります。これは、より高度な方法です。
まずは、メールの送信元にメール本文の定型化を依頼できないか検討することが、最もシンプルで確実な方法です。
Power Automateでメール本文を抽出してExcelに転記する具体的な手順
ここでは、特定の件名を含むメールが受信されたら、その本文から情報を抽出し、Excelの表(テーブル)に新しい行として転記する、という一般的なフローを例に、具体的な作成手順をステップバイステップで解説します。
事前準備:Excelファイルの作成
まず、メールから抽出した情報を転記するためのExcelファイルを準備します。このExcelファイルは、SharePoint(推奨)またはOneDriveに保存してください。
- SharePointサイト(またはOneDrive)にアクセスし、新しいExcelファイルを作成します。ファイル名を「お問い合わせ管理リスト.xlsx」など、分かりやすい名前にします。
- Excelファイルを開き、シートの1行目に以下の「見出し(ヘッダー)」を入力します。
受信日時送信者件名お客様名電話番号お問い合わせ内容メール本文全体
- これらの見出しを含む範囲(例:
A1:G1)を選択し、「挿入」タブから「テーブル」(または「表」)をクリックします。「先頭行をテーブルの見出しとして使用する」にチェックが入っていることを確認し、「OK」をクリックします。- 重要: Power AutomateでExcelにデータを転記する場合、Excelシートのデータ範囲を「テーブル(表)」として設定しておくことが必須です。これにより、Power Automateがデータの追加や更新を正確に行えるようになります。
ステップ1:Power Automateで新しいフローを作成する
- ウェブブラウザでPower Automateのサイト(https://www.google.com/search?q=make.powerautomate.com)にアクセスし、あなたのMicrosoft 365アカウントでサインインします。
- 左側のメニューから「作成」をクリックします。
- 表示されるフローの種類の選択肢の中から「自動化したクラウド フロー」を選択してください。これは、特定のイベント(今回はメールの受信)をきっかけに自動で実行されるフローです。
- フローに分かりやすい名前を付けます(例:「お問い合わせメールからExcel転記フロー」)。
- 「フローのトリガーを選択してください」の検索ボックスに「Outlook」と入力します。
- 表示されたトリガーの中から、「新しいメールが届いたとき (V2) (Office 365 Outlook)」を選択します。
- 「作成」ボタンをクリックします。
ステップ2:Outlookトリガーを設定する
作成したフローの最初のステップ(トリガー)の詳細を設定します。
- 「新しいメールが届いたとき (V2)」というトリガーのアクションボックスが表示されます。
- 「フォルダー」: 監視したいメールフォルダーを選択します。通常は「受信トレイ」を選択します。
- 「件名フィルター」: 特定の件名を含むメールのみを処理したい場合に設定します。例えば、「
お問い合わせ」と入力すると、「お問い合わせ」という単語が件名に含まれるメールのみがトリガーされます。 - 「差出人」: 特定の送信元からのメールのみを処理したい場合に設定します。例えば、「
info@example.com」のように入力します。 - 「添付ファイルを含める」: メールに添付ファイルがあるかどうかをチェックしたい場合は「はい」を選択します。今回は本文抽出なので「いいえ」でも構いません。
- 「重要度」: 特定の重要度のメールのみを処理したい場合に設定します。
ステップ3:メール本文から情報を抽出する(変数と式を活用)
ここが最も重要なステップです。メール本文の定型化された部分から、必要な情報を抜き出します。ここでは、メール本文が以下のような定型フォーマットであると仮定して進めます。
【お問い合わせ内容】
氏名:山田 太郎
メールアドレス:yamada.taro@example.com
電話番号:090-1234-5678
お問い合わせ種別:製品について
詳細:〇〇製品の機能について質問があります。
Power Automateで文字列から特定の情報を抽出するには、主に以下の方法があります。
- 「文字列の検索」アクション(簡易的): 特定の文字列の位置を特定する。
- 「文字列の分割」アクション(簡易的): 特定の区切り文字で文字列を分割する。
- 式(Expression)と関数(
substring,indexOf,split,replaceなど)の組み合わせ(強力): これが最も柔軟で正確な抽出方法です。
ここでは、式と関数を組み合わせて抽出する方法を解説します。
- 「新しいメールが届いたとき (V2)」トリガーの下にある「新しいステップ」をクリックします。
- 検索ボックスに「変数」と入力し、「変数を初期化します」アクションを、抽出したい情報ごとに複数追加します。
- 「お客様名」の変数:
- 名前:
varCustomerName - 種類:
文字列 - 値: 空のまま
- 名前:
- 「電話番号」の変数:
- 名前:
varPhoneNumber - 種類:
文字列 - 値: 空のまま
- 名前:
- 「お問い合わせ内容」の変数:
- 名前:
varInquiryContent - 種類:
文字列 - 値: 空のまま
- 名前:
- 「お客様名」の変数:
- 次に、これらの変数にメール本文から抽出した値を設定します。「変数を初期化します」アクションの下に「新しいステップ」をクリックします。
- 検索ボックスに「変数」と入力し、「変数を設定します」アクションを、抽出したい情報ごとに複数追加します。
- 「お客様名」の抽出と設定:
- 名前:
varCustomerName - 値: ここに式を入力します。「式」タブを選択し、以下の式を入力してください。
split(split(body('新しいメールが届いたとき_(V2)')?['Body'], '氏名:'), 'メールアドレス:')[0]式の解説:
body('新しいメールが届いたとき_(V2)')?['Body']: 受信したメールの本文全体を取得します。split(..., '氏名:'): メール本文を「氏名:」という文字列で分割します。これにより、「氏名:」より前の部分と、それ以降の部分に分かれます。split(..., 'メールアドレス:')[0]: 上記で分割された「氏名:」以降の部分を、さらに「メールアドレス:」という文字列で分割します。そして、[0]でその分割された最初の部分(つまり「氏名:」と「メールアドレス:」の間にある文字列)を取得します。- 注意:
新しいメールが届いたとき_(V2)の部分は、あなたのフローで自動的に割り当てられたトリガーの正確な名前に置き換えてください。
- 名前:
- 「電話番号」の抽出と設定:
- 名前:
varPhoneNumber - 値: 「式」タブを選択し、以下の式を入力してください。
split(split(body('新しいメールが届いたとき_(V2)')?['Body'], '電話番号:'), 'お問い合わせ種別:')[0]式の解説:
- 「電話番号:」と「お問い合わせ種別:」の間にある文字列を抽出しています。
- 名前:
- 「お問い合わせ内容」の抽出と設定:
- 名前:
varInquiryContent - 値: 「式」タブを選択し、以下の式を入力してください。
split(body('新しいメールが届いたとき_(V2)')?['Body'], '詳細:')[1]式の解説:
- 「詳細:」という文字列で本文を分割し、
[1]でその分割された2番目の部分(つまり「詳細:」以降のすべての文字列)を取得しています。
- 「詳細:」という文字列で本文を分割し、
- 名前:
- 【重要】抽出後の「改行」や「空白」の除去:上記の方法で抽出すると、多くの場合、抽出された文字列の先頭や末尾に不要な改行コード(\r\n)や空白が含まれることがあります。これらを除去するために、抽出式全体をtrim()関数で囲むことを強く推奨します。
例:trim(split(split(body(‘新しいメールが届いたとき_(V2)’)?[‘Body’], ‘氏名:’), ‘メールアドレス:’)[0])
- 「お客様名」の抽出と設定:
ステップ4:Excelの表に行を追加する
抽出した情報をExcelファイルに転記します。
- 「変数を設定します」アクションの下にある「新しいステップ」をクリックします。
- 検索ボックスに「Excel Online」と入力し、「表に行を追加します (Excel Online (Business))」アクションを選択してください。
- アクションの詳細を設定します。
- 「場所」: Excelファイルが保存されているSharePointサイト(またはOneDrive for Business)を選択します。
- 「ドキュメント ライブラリ」: Excelファイルが保存されているドキュメントライブラリ(例: 「共有ドキュメント」)を選択します。OneDriveの場合は「OneDrive」を選択します。
- 「ファイル」: Excelファイル名(例: 「お問い合わせ管理リスト.xlsx」)を選択します。
- 「テーブル」: Excelファイル内で作成したテーブル名(通常は「Table1」など、自動で割り当てられた名前)を選択します。
- テーブルの各列に、対応する値を設定します。
- 「受信日時」: 動的なコンテンツから「新しいメールが届いたとき (V2)」トリガーの「受信日時」を選択します。
- 「送信者」: 動的なコンテンツから「新しいメールが届いたとき (V2)」トリガーの「差出人」を選択します。
- 「件名」: 動的なコンテンツから「新しいメールが届いたとき (V2)」トリガーの「件名」を選択します。
- 「お客様名」: 動的なコンテンツから、先ほど設定した変数「
varCustomerName」を選択します。 - 「電話番号」: 動的なコンテンツから、先ほど設定した変数「
varPhoneNumber」を選択します。 - 「お問い合わせ内容」: 動的なコンテンツから、先ほど設定した変数「
varInquiryContent」を選択します。 - 「メール本文全体」: 動的なコンテンツから「新しいメールが届いたとき (V2)」トリガーの「本文」を選択します。
ステップ5:フローを保存してテストする
すべての設定が完了したら、フローを保存してテストしましょう。
- 画面右上の「保存」ボタンをクリックします。フローが保存されると、エラーがないかどうかのチェックも自動で行われます。
- 「テスト」ボタンをクリックします。
- 「手動」を選択し、「テスト」を開始します。
- テスト用のメールアカウントから、フローのトリガーで設定した条件(件名、差出人など)に合致し、かつ定型フォーマットの本文を持つメールを、監視対象のメールアドレスに送信します。
- メールが受信されると、Power Automateのフローが起動し、各変数が設定され、最終的にExcelファイルに新しい行が追加されることを確認します。Excelファイルを開いて、正しく情報が転記されているか、特に抽出された情報に不要な空白や改行が含まれていないかを確認してください。
これで、基本的なメール本文抽出・Excel転記フローが完成し、自動で動作するようになります。
メール本文抽出・Excel転記フローをスムーズに運用するための「大切な注意点」
Power Automateでメール本文を抽出してExcelに転記するフローは非常に便利ですが、そのメリットを最大限に引き出し、スムーズな運用を実現するためには、いくつかの重要な注意点を理解し、適切に対処する必要があります。
1. メール本文の「定型化」が最も重要!
繰り返しになりますが、メール本文からの正確な情報抽出は、本文の定型化に強く依存します。
- 送信元への依頼: もし可能であれば、メールの送信元(システム、お客様、社内メンバーなど)に、特定の情報を送る際のメール本文のフォーマットを定型化してもらうように依頼することが、最も確実な方法です。
- 柔軟な抽出方法の検討: 定型化が難しい場合は、Power Automateの
splitやsubstring、indexOfといった関数を組み合わせて、より柔軟な抽出ロジックを検討する必要があります。ただし、これは複雑になりがちです。 - テストを徹底: 異なるパターンや、予期せぬ本文の形式が来た場合にどうなるか、徹底的にテストしてください。
2. 抽出後の「空白」や「改行」の除去を忘れない
メール本文から文字列を抽出すると、多くの場合、抽出された文字列の先頭や末尾に不要な空白や改行コード(\r\n)が含まれてしまいます。これらがExcelにそのまま転記されると、データの見た目が悪くなったり、後のデータ処理(例: フィルター、検索、他のシステムへの連携)で問題が発生したりする原因になります。
- 対策: 抽出した文字列をExcelに転記する前に、必ずtrim()関数を使って、先頭と末尾の空白や改行を除去してください。例: trim(variables(‘varCustomerName’))
3. Excelファイルの「テーブル(表)」設定は必須!
Power Automateの「表に行を追加します」アクションなどを使用する場合、Excelシートのデータ範囲が「テーブル(表)」として設定されていることが必須です。単なるセル範囲では動作しません。
- 確認方法: Excelファイルを開き、データが入力されている範囲のどこかのセルを選択し、「テーブル デザイン」(または「表ツール」)タブが表示されるか確認してください。表示されればテーブルとして認識されています。
4. Excelファイルの「ロック」と「同時編集」に注意する
Excelファイルが他のユーザーによって開かれている場合、特にデスクトップ版Excelで開かれていると、ファイルが「ロック」されてしまい、Power Automateからの書き込みが失敗することがあります。
- 対策:
- フローの実行時間を、そのファイルが使われていない時間帯に設定することを検討してください。
- Excel Online (Business) コネクタは、共同編集中のファイルにも書き込めますが、競合が発生する可能性はゼロではありません。
- エラーハンドリングを設定し、ファイルがロックされていた場合に、エラー通知を送ったり、数分待ってから再試行したりするロジックを組み込むことも有効です。
5. 権限が適切であることを確認する
Power AutomateがExcelファイルにアクセスし、書き込むためには、フローが使用するアカウントが、そのExcelファイルが保存されているSharePointやOneDriveの場所に対して、「編集」権限(または「共同作成者」以上の権限)を持っている必要があります。権限が不足していると、書き込み操作が拒否されてエラーになります。
6. エラー通知と監視を設定する
メールからの情報抽出やExcelへの転記は、データに直接影響を与える重要な操作です。予期せぬ問題(メール本文のフォーマット変更、Excelファイルのロック、ネットワークエラーなど)でフローが失敗した場合に備えて、必ず「エラーハンドリング」を設定し、Power Automateのフローがエラーになったことを、自動でメールやTeamsに通知する仕組みを構築しておきましょう。これにより、問題発生時にすぐに気づき、対応することができます。
7. テスト環境での十分な検証
本番環境で実際にフローを稼働させる前に、必ずテスト環境でフローを十分にテストしてください。
- 様々なメールパターン: 想定される様々なメール本文のパターン(例: 情報が欠落している場合、余分な改行がある場合など)を送信して、正しく抽出・転記されるかを確認します。
- エラーシナリオ: Excelファイルがロックされている場合や、ネットワークが不安定な場合など、エラーが発生する可能性のあるシナリオも想定してテストを行うことで、本番稼働後のトラブルを未然に防ぐことができます。
Power Automateでメールからの情報収集を「自動化」し、業務をスマートに!
Power Automateでメールの本文を抽出してExcelに転記するフローは、手作業でのデータ収集から解放され、業務の効率と正確性を大幅に向上させるための強力なツールです。
- メール本文の「定型化」が成功の鍵です。
split()やtrim()といった関数を組み合わせた「式」を使って、必要な情報を正確に抽出します。- Excelファイルは必ず「テーブル(表)」として設定し、SharePointまたはOneDriveに保存します。
- エラーハンドリングと徹底したテストを行うことで、フローの安定稼働を保証します。
これらの知識と手順を上手に活用して、あなたのメールからの情報収集プロセスをデジタル化し、よりスムーズで効率的な業務運営を実現してくださいね。

