【Power Automate】Outlookメールの内容をExcelへ自動転記する方法

PowerAutomate

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(/&nbsp;/g, ' ')
             .replace(/&amp;/g, '&')
             .replace(/&lt;/g, '<')
             .replace(/&gt;/g, '>')
             .replace(/&quot;/g, '"')
             .replace(/&#39;/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】まだ手作業してる?フロー作成&活用ガイドまとめ
Power Automate を使った便利なフローの作成・活用方法をまとめてご紹介します。日々の手作業を減らして、業務をもっと効率的に。 この記事を参考に、ぜひ自動化にチャレンジしてみてください!

 

はじめてのPower Automate for desktop

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

Power Automate for desktopを基礎から学び、日々の定型業務を自動化しましょう!


★★★★☆ 4.6 ※ Amazonカスタマーレビューより
初めて触るなら、この本を読んでおけばOK
ビギナーにもわかりやすく、画面付きで学びやすい
Power Automate for Desktopで業務自動化を始めたい人におすすめ