PowerAutomate

【PowerAutomate】Outlookで受信したメール本文の特定の文字列を抽出し、SharePointリストに格納する方法

ミムチ

ミムチの会社では、メールできた注文確認内容をExcel一覧に転記して管理しているのですが、正直面倒ですぞ。

メールから必要な情報を抽出する作業を、なんとか自動化できませんかな?

パワ実

OutlookやGmail等で届くメールで、注文確認メールのように決まったフォーマットのメールなら、Power Automateで自動でメール文を抽出して、ExcelやSharePointリストに格納できます!

この記事では、Outlookで受信したメール本文から、特定の文字列を抽出し、SharePointリストに格納、Teams通知する方法を解説します。

この記事でわかること
  1. 受信したメール本文の内容を、SharePointリストに格納する全体イメージ
  2. 特定のメールの受信をトリガーにPower Automateフローを実行する方法
  3. メール文(テキスト)から特定の文字列を含む値を抽出する方法

YouTube動画で見たいかたは、こちらからどうぞ!

受信したメールをSharePointリストに格納する全体イメージ

PowerAutomateを使って、受信メールをSharePointリストに格納する全体イメージは、以下のようになります。

  1. OurlookやGmailの受信をトリガーにPower Automateフローを実行
  2. Power Automateで、メール文から必要な情報を抽出し(②-1)、SharePointリストに登録(②-2)
  3. SharePointリストに登録した内容を、Teamsで通知

この時のPower Automateフローの全実装は、以下のようになります。

Split関数を使い、改行コードで区切れる場合は、以下のようなシンプルなフローにすることができます。

上記のフローの実装方法も、以下で説明していきます。

簡単にフローの流れを説明します。

例えば、以下のような注文確認メールを受信したら、それをトリガーにPower Automateフローを自動実行します。

このとき、差出人のメールアドレスや、件名でフィルターをかけてフローを実行することができます。

注文メール等の決まったフォーマットのメール文であれば、Power Automateを使い、中身のデータを抽出することができます。

例えば、受注日付、商品名、数量、税込単価等のデータをそれぞれ抽出し、以下のようにSharePointリストに格納することができます。

パワ実

SharePointリストに格納すれば、後でPowerBI等でグラフ化して、分析することも簡単です!

SharePointリストの作成方法は、以下の記事を参考にしてください。

【PowerApps入門】キャンバスアプリの作成方法#3~データベース作成~ SharePointリストの作成方法 この記事では、SharePointリストでデータベースを作成する方法を解説します。 YouTube動画で見たいかたは、...

その後、Teams等で関係するメンバーに通知をすることもできます。

受注日付や、商品名のデータを取得しているので、Teamsメンバーにも注文の詳細内容を通知したり、例えば金額を100万円以上の場合等、条件を絞って通知することもできます。

ミムチ

全体の流れは分かりましたが、具体的にどうやって、受注日付や、商品名のデータを、PowerAutomateで取得するのですかな?

パワ実

メール文が改行コードで分割できる場合、改行で分割したデータから必要な部分を取得するだけなので、簡単です!

パワ実

改行コード等で分割できない場合、決まったフォーマットのテキストから、以下の3つの情報を使い、特定の文字列を取得していきます。

  1. 取得する値の文字数
  2. 抽出対象のテキスト
  3. 取得する値の開始位置

この場合、少しフローが長くなります…

それぞれの方法について、詳細な実装方法を説明していきます。

Outlookで受信したメールをトリガーにPowerAutomateを実行する方法

まずは共通部分として、Outlookメールの受信をトリガーに、Power Automateフローを開始する手順を説明します。

1.トリガーから「Outlook」>「新しいメールが届いたとき(V3)」を選択します。

2.受信するメールを設定し、「件名フィルター」に「ご注文確認メール」と入力します。

ミムチ

件名フィルターや、差出人を設定すると、その条件に当てはまるメールが来たときのみ、フローが実行されるのですな!

これで、Outlookで特定のメールを受信したときをトリガーに、Power Automateフローを実行できます。

メール本文から特定の文字列を抽出し、SharePointリストに登録する方法

Split関数で「改行コード」で区切る方法

Split関数を使い、改行コードで区切ってデータ取得できる場合は、こちらが簡単です。

全体としては、以下のようなフローになります。

1.トリガーは、上記で説明したものと同じ「Outlook」の「新しいメールが届いたとき」を使います(実装済み)。

2.「データ操作」>「作成」アクションを追加し、関数式「fx」で、以下のようなsplit関数式を設定します。

split(triggerOutputs()?['body/bodyPreview'], decodeUriComponent('%0D%0A'))
パワ実

split関数は、文字列を指定した区切り文字で分割し、アレイ(配列)にすることができます。

ここでは、改行コードでメールの文章を分割しています。

3.一旦フローを保存して、テスト実行してみます。

「作成」アクションの「未加工の出力を表示する」を選択し、関数式で取得されたデータをみてみます。

すると、以下のようにメール文のデータが、改行コードで区切られて、配列データとなっています。

今回はこの内、「受付日付」(要素の3つ目)~「税込単価」(要素の6つ目)までを取得したいです。

4.「SharePoint」>「項目の作成」アクションを追加し、対象のSharePointサイト、リストを選択した後、詳細パラメータで、各列に登録する値を関数(fx)で設定します。

受注日付の場合、以下のように、不要な文字列を削除し、trim関数で空白を削除すればOKです。

trim(replace(outputs('作成:Split関数で改行コードで区切る'),'受注日付:',''))

他の列も、同様に関数式(fx)を設定していきます。

trim(replace(outputs('作成:Split関数で改行コードで区切る'),'商品名:',''))
int(trim(replace(replace(replace(outputs('作成:Split関数で改行コードで区切る')[6],'税込単価:',''),',',''),'円','')))
int(trim(replace(outputs('作成:Split関数で改行コードで区切る')[5],'数量:','')))

5.フローを実行すると、以下のように、SharePointリストにデータが保存されています。

特定の文字列を検索して区切る方法

上記のように、split関数を使って、改行コード等、特定の文字列で分割できない場合は、以下の方法で必要な箇所を抽出します。

1.メールの本文等は、HTML形式になっており、このまま扱うとHTMLタグが入ってしまいます(<div>等)。

そのため、「Htmlからテキスト」アクションを選択し、コンテンツには動的コンテンツで、「新しいメールが届いたとき(V3)の本文」を入れます。

例として、以下のようなメール本文から、受注日付の値「2022/10/25」を取得する方法を解説します。

(1)決まったフォーマットの開始位置を検索

はじめに、決まったフォーマットとなる「受注日付:」の開始位置を検索します。

1.「テキストの位置の検索」アクションを選択し、以下の設定をします。

  • テキスト:「Htmlからテキスト」で取得した本文
  • 検索テキスト:受注日付:

2.同様に「商品名:」の開始位置も検索します。

※受注日付の値を取得する場合、「受注日付:」と「商品名:」の開始位置が必要です

3.そのほかの項目の値も取得したい場合、以下のようにアクションを追加します。

(2)取得する値の開始位置を設定

次に受注日付の値「2022/10/25」の開始位置を設定します。

1.「変数を初期化する」アクションを追加し、以下のように設定します。

  • 名前:任意の名前(Textposition_date等)
  • 種類:整数
  • 値:以下の関数式を設定
    • add(<受注日付の開始位置>, 5)

※<受注日付の開始位置>は、①で設定した「テキストの位置の検索」の結果を、動的コンテンツで選択します。

ミムチ

むむ・・・これは何をしているのですかな?

パワ実

テキストの位置の検索」で検索された位置は「受注日付:」の「受」の位置になります。

add関数を使って、実際に取得したい値「2022/10/25」の「2」の位置を設定しています。

ミムチ

なるほど!

「受注日付:」と5文字あるから、5を足した値が、「2022/10/25」の開始位置になるのですな!

2.同様に、他の値の開始位置を取得する場合は、以下のように設定していきます。

add関数の使い方

add(元の数値, 足し算する数値)

add関数は「元の数値」に、「足し算する数値」を足した値を返します。

(3)取得する値の文字列の長さを設定

次に「受注日付」の取得する値「2022/10/25」の文字列の長さを特定します。

1.「変数を初期化する」アクションを追加し、以下のように設定します。

  • 名前:任意の名前(Textlen_date等)
  • 種類:整数
  • 値:以下の関数式を設定
    • sub(<商品名の開始位置>, <受注日付の値の開始位置>)

※<商品名の開始位置>は①で設定した「テキストの位置の検索」の結果を、動的コンテンツで選択します。

※<受注日付の値の開始位置>は②で設定した「変数を初期化する」の変数を、動的コンテンツで選択します。

ミムチ

難しいですぞ・・・これはどういうことですかな?

パワ実

「2022/10/25」の文字列の長さを、①の「商品名:」の開始位置から、②の「2022/10/25」の開始位置を引くことで、算出しています。

ミムチ

なるほどですぞ!

「受注日付」の値が必要なら、その値が終わった次の「商品名:」の開始位置も必要ということですな!

2.同様に、他の値の文字列の長さを取得する場合は、以下のように設定していきます。

sub関数の使い方

sub(引かれる値, 引く値)

sub関数は「引かれる値」から、「引く値」を引き算した値を返します。

(4)取得する値を設定

次に、取得する値を取得します。

1.「部分文字列」アクションを追加し、以下のように設定します。

  • テキスト:「Htmlからテキスト」の結果
  • 開始位置:②で設定した「取得する値の開始位置」を選択
  • 長さ:③で設定した「取得する値の文字列の長さ」を選択

2.同様に、他の値の部分文字列も取得します。

(5)SharePointリストの各列に、取得した値のデータを追加

最後に、SharePointリストの各列に取得した値を設定し、レコードを追加します。

1.「SharePoint>項目の作成」アクションを追加し、以下のように設定します。

  • サイトのアドレス:SharePointサイトをドロップダウンで選択
  • リスト名:SharePointリストをドロップダウンで選択
  • 各列:④で取得した「部分文字列」を各列に設定

これで、受信メールの本文から文字列を取得し、SharePointリストに登録することができました。

SharePointリストに登録した内容を、Teamsで通知する方法

さらに、Teamsで通知をします。

1.「Teams>チャットまたはチャネルでメッセージを投稿する」アクションを追加し、以下のように設定します。

特定の人にメンションしたい場合、コードをクリックして以下のように入力します。

Teamsでメンションする場合、コードを選択し、以下のように入力します。

<at>ユーザーのアカウント(メールアドレス)</at>

これで、Power Automateでの実装は完了です。

最後に

この記事では、Outlookで受信した決まったフォーマットのメールから、特定の文字列を抽出し、SharePoitnリストに格納、Teams通知をする方法を紹介しました。

注文メール等の決まったフォーマットのメールであれば、受注日付、商品名等メール本文の必要なデータを取得し、SharePointリストに自動で追加することが可能です。

split関数で改行コードで、分割できる場合は、分割してから必要なデータを取得しましょう。

特定の文字列を抽出するには、以下の3つの情報が必要です。

テキストから特定の文字列抽出に必要な情報
  1. 抽出対象のテキスト
  2. 取得する値の開始位置
  3. 取得する値の文字数

抽出したデータは、SharePointリストに登録したり、Teamsで通知したりすることができます。

SharePointリストに登録しておけば、後からPower BIでレポート化し、分析することも簡単なので、是非試してみてください!

Power BIでできることは?データに基づく意思決定に役立つ!この記事では、Power BIの利用を検討している人向けに、Power BIでできること、使い方の流れや、必要なライセンス等を紹介します。...
ABOUT ME
パワ実(Microsoft MVP)
2021年からPower Platformの勉強中。 2023年にIT系・コンサルタントに転職し、仕事でPower Platformを活用したコンサルを行っています。 2025年~Microsoft MVP for Business Applications 受賞。Power Platformを使っていく中で、知りえた情報をブログ、Youtube、Xで発信しています。 2025年8月~現在は、フリーランスとして、Power Platform系ITコンサルタントとして活動中。 Power Platformに関するご相談は以下のページからお願いします! https://www.powerplatformknowledge.com/contact/

Power Platformのご依頼・ご相談について

Power Platformについてのご相談、お仕事のご依頼については、
こちらのお問い合わせページをご確認ください。