PowerAutomate

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

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

メールからの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フローの全実装は、以下のようになります。

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

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

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

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

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

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

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

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

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

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

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

パワ実
パワ実
決まったフォーマットのテキストから、特定の文字列を取得するためには、以下の3つの情報が必要だよ。

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

Power Automateでこれらの情報を取得して、最終的に受注日付や、商品名のデータを取得する流れを順に説明していくね!

例えば、受注日付の値「2022/10/20」を取得したい場合の手順を説明します。

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

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

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

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

パワ実
パワ実
件名フィルターや、差出人を設定すると、その条件に当てはまるメールのみ、次のアクションを実行することができるよ!

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

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

これで、Outlookで特定のメールを受信したときをトリガーに、Power Automateフローを実行し、メール本文をテキスト変換することができました。

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

次に、受信したメール本文から特定の文字列を抽出し、SharePointリストを格納します。

例として、以下のようなメール本文から、受注日付の値「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リストに登録することができました。

Power Platform開発・学習支援のご相談については、以下のページをご覧ください。

https://www.powerplatformknowledge.com/work-request/

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

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

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

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

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

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

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

最後に

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

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

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

テキストから特定の文字列抽出に必要な情報

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

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

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

Power BIでできることは?データに基づく意思決定に役立つ! Power BIの実際の使い方のデモは、こちらの動画を参考にしてください! https://youtu.be/tFr...
ABOUT ME
パワ実
DX推進担当(IT部門) 2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 Power Platformを使っていく中で、知りえた情報を発信している。 Youtube、Twitterでの情報発信もしています!