メールからのExcel転記作業を、なんとか自動化できませんかな?
この記事では、Outlookで受信したメール本文から、特定の文字列を抽出し、SharePointリストに格納、Teams通知する方法を解説します。
- 受信したメール本文の内容を、SharePointリストに格納する全体イメージ
- 特定のメールの受信をトリガーにPower Automateフローを実行する方法
- メール文(テキスト)から特定の文字列を含む値を抽出する方法
YouTube動画で見たいかたは、こちらからどうぞ!
受信したメールをSharePointリストに格納する全体イメージ
PowerAutomateを使って、受信メールをSharePointリストに格納する全体イメージは、以下のようになります。
- OurlookやGmailの受信をトリガーにPower Automateフローを実行
- Power Automateで、メール文から必要な情報を抽出し(②-1)、SharePointリストに登録(②-2)
- SharePointリストに登録した内容を、Teamsで通知
この時のPower Automateフローの全実装は、以下のようになります。
簡単にフローの流れを説明します。
例えば、以下のような注文確認メールを受信したら、それをトリガーにPower Automateフローを自動実行します。
このとき、差出人のメールアドレスや、件名でフィルターをかけてフローを実行することができます。
注文メール等の決まったフォーマットのメール文であれば、Power Automateを使い、中身のデータを抽出することができます。
例えば、受注日付、商品名、数量、税込単価等のデータをそれぞれ抽出し、以下のようにSharePointリストに格納することができます。
SharePointリストの作成方法は、以下の記事を参考にしてください。
その後、Teams等で関係するメンバーに通知をすることもできます。
受注日付や、商品名のデータを取得しているので、Teamsメンバーにも注文の詳細内容を通知したり、例えば金額を100万円以上の場合等、条件を絞って通知することもできます。
- 抽出対象のテキスト
- 取得する値の開始位置
- 取得する値の文字数
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(<商品名の開始位置>, <受注日付の値の開始位置>)
※<商品名の開始位置>は①で設定した「テキストの位置の検索」の結果を、動的コンテンツで選択します。
※<受注日付の値の開始位置>は②で設定した「変数を初期化する」の変数を、動的コンテンツで選択します。
「受注日付」の値が必要なら、その値が終わった次の「商品名:」の開始位置も必要ということですな!
2.同様に、他の値の文字列の長さを取得する場合は、以下のように設定していきます。
sub関数の使い方
sub(引かれる値, 引く値)
sub関数は「引かれる値」から、「引く値」を引き算した値を返します。
(4)取得する値を設定
次に、取得する値を取得します。
1.「部分文字列」アクションを追加し、以下のように設定します。
- テキスト:「Htmlからテキスト」の結果
- 開始位置:②で設定した「取得する値の開始位置」を選択
- 長さ:③で設定した「取得する値の文字列の長さ」を選択
2.同様に、他の値の部分文字列も取得します。
(5)SharePointリストの各列に、取得した値のデータを追加
最後に、SharePointリストの各列に取得した値を設定し、レコードを追加します。
1.「SharePoint>項目の作成」アクションを追加し、以下のように設定します。
- サイトのアドレス:SharePointサイトをドロップダウンで選択
- リスト名:SharePointリストをドロップダウンで選択
- 各列:④で取得した「部分文字列」を各列に設定
これで、受信メールの本文から文字列を取得し、SharePointリストに登録することができました。
Power Platform開発・学習支援のご相談については、以下のページをご覧ください。
SharePointリストに登録した内容を、Teamsで通知する方法
さらに、Teamsで通知をします。
1.「Teams>チャットまたはチャネルでメッセージを投稿する」アクションを追加し、以下のように設定します。
特定の人にメンションしたい場合、コードをクリックして以下のように入力します。
Teamsでメンションする場合、コードを選択し、以下のように入力します。
<at>ユーザーのアカウント(メールアドレス)</at>
これで、Power Automateでの実装は完了です。
最後に
この記事では、Outlookで受信した決まったフォーマットのメールから、特定の文字列を抽出し、SharePoitnリストに格納、Teams通知をする方法を紹介しました。
注文メール等の決まったフォーマットのメールであれば、受注日付、商品名等メール本文の必要なデータを取得し、SharePointリストに自動で追加することが可能です。
特定の文字列を抽出するには、以下の3つの情報が必要です。
- 抽出対象のテキスト
- 取得する値の開始位置
- 取得する値の文字数
抽出したデータは、SharePointリストに登録したり、Teamsで通知したりすることができます。
SharePointリストに登録しておけば、後からPower BIでレポート化し、分析することも簡単なので、是非試してみてください!