Power Automateを使えば、指定したフォルダに届いたメールの受信日時・差出人・件名・本文をExcelへ自動で記録できます。
今回は問い合わせ管理表を例に紹介しますが、日報や依頼メールなどの管理にもそのまま応用できます。
Power Automateで新しいフローを作成
1. Office365へアクセスし、画面左上の点のマークをクリックし、
「その他のアプリ」を選択

2. 「Power Automate」をクリック

3. 左メニューの「Create」をクリックし、「Automated cloud flow」を選択

4. 「Flow name」に任意の名前を入力し、トリガー検索欄に「when a new email arrives」と入力します。
候補の中から「When a new email arrives (V3)」(Office 365 Outlook)を選択し、「Create」をクリックします。

メール受信トリガーの設定
1. トリガーの「Advanced parameters」から「Folder」にチェックを入れます。
受信トレイ全体ではなく、特定のフォルダに届いたメールだけを対象にできます。

2. Folderをクリックし、Outlookの対象フォルダ(今回は「お問い合わせ」フォルダ)を選択します。
あらかじめOutlookの仕分けルールで、問い合わせメールがこのフォルダに振り分けられるようにしておくとスムーズです。

Outlookの「お問い合わせ」フォルダを指定します。

Excelの管理表を準備
1. SharePointまたはOneDrive上に新しいExcelファイルを作成します
例:問い合わせ管理表.xlsx

2. 「Sheet1」シートに「受信日時」「差出人アドレス」「件名」「本文」の見出しを入力し、範囲を選択して「挿入」→「テーブル」でテーブル化しておきます。
テーブルにしておかないと、この後のPower Automateの設定で表として選択できません。

3. 「先頭行をテーブルの見出しとして使用する」をチェックONにします。

4.「テーブルデザイン」でテーブル名に任意の名前を付けておきます。
テーブル名はPower Automateからデータを書き込む先を識別するために使用します。
分かりやすい名前を付けておきましょう。
例:kanri

HTMLタグ除去用のOffice Scriptを作成
メール本文はHTML形式で届くため、そのままExcelに入れると<div>や<p>などのタグが混ざってしまいます。
これを防ぐため、Excel Online上でタグを取り除くOffice Scriptを1つ作成します。
1. 対象のExcelファイルをExcel Onlineで開き、リボンの「自動化」タブ→「新しいスクリプト」→「コードエディターで作成」をクリックします。

2. エディタの中身を全て消し、以下のコードを貼り付けます。
function main(workbook: ExcelScript.Workbook, html: string): string {
let text = html;
text = text.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
text = text.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
text = text.replace(/<br\s*\/?>/gi, '\n');
text = text.replace(/<\/p>/gi, '\n');
text = text.replace(/<\/div>/gi, '\n');
text = text.replace(/<[^>]+>/g, '');
text = text.replace(/ /g, ' ')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, "'");
text = text.replace(/\n{3,}/g, '\n\n').trim();
return text;
}
3. 作成したスクリプトが 「Office スクリプトギャラリー」に表示されるので、
「スクリプト」をクリックします。

4. スクリプト名を「HtmlToText」など分かりやすい名前に変更します。

Run scriptアクションを追加
1. Power Automate のフロー作成画面に戻り、
トリガーの下の+ボタンをクリックし、「Run script」(Excel Online (Business))を追加します。

2. 以下のように設定します。
Location:ファイルの保存場所
Document Library:ファイルが入っているライブラリ
File:作成した問い合わせ管理表.xlsx
Script:先ほど作成した HtmlToText

3. 「ScriptParameters/html」の欄をクリックし、動的コンテンツからトリガーの「Body」(メール本文)を選択します。

Excelへ行を追加するアクションを設定
1. +ボタンをクリックし、「Add a row into a table」(Excel Online (Business))を追加します。

2. Location・Document Library・Fileを先ほどと同じExcelファイルに設定し、Tableで作成したテーブルを選択します。
「Advanced parameters」で、4つにチェックを入れます。

3. 「受信日時」の欄をクリックし、「fx」アイコンをクリックして、以下青文字のコードを入力します。
受信時刻はUTC(世界標準時)で届くため、日本時間に変換しています。
convertTimeZone(triggerBody()?['receivedDateTime'], 'UTC', 'Tokyo Standard Time', 'yyyy/MM/dd HH:mm')

4. 残りの項目は以下のように設定します。
差出人アドレス:トリガーの「From」
件名:トリガーの「Subject」
本文:Run scriptの「Result」(Bodyではない点に注意)

「Add a row into a table」設定後の状態

5. 画面右上の「Save」をクリックして、フローを保存します。

動作確認
1. フローを保存し、対象フォルダに届くようにテストメールを1通送信します。

2. 少しすると、Excelの管理表に新しい行が自動で追加されます。
本文欄もHTMLタグが除去され、プレーンテキストの状態できれいに反映されていればOKです。
その後もメールが届くたびに、表の下へ下へと自動で行が追加されていきます。

※フローが動かない場合は、フローが「オン」になっていることと、対象メールが指定したフォルダに届いているかを確認してください。
以上、Power AutomateでOutlookメールの内容をExcelへ自動転記する方法でした。
この記事がお役に立ちますと幸いです。
・【Power Automate】まだ手作業してる?フロー作成&活用ガイドまとめ

はじめてのPower Automate for desktop
無料&ノーコードRPAではじめる業務自動化を、初心者向けにわかりやすく解説