問い合わせフォームに入力された問い合わせ情報をSharePointリストに格納する

本記事では、Power Automateを使って、問い合わせフォームに入力されたお問い合わせ情報をSharePoint Online(以下SharePoint)のリストに自動登録する方法を紹介します。

概要

今回紹介する仕組みは下記の通りです。

SharePointリストに格納するまでの流れ

お問い合わせ情報をSharePointリストに登録する流れは以下の通りです。

お問い合わせ情報

問い合わせフォームから問い合わせメールを送った際に、SharePointリストへアイテムを追加します。追加する情報は主に以下となります。

お問い合わせ記入項目内容
お問い合わせ種別お問い合わせ種別を選択します。(選択肢)
※お問い合わせの時のみ選択します。
資料名ダウンロードする資料名を選択します。(選択肢)
※資料またはホワイトペーパーをダウンロードする時のみ選択します。
ダウンロードの目的ダウンロードの目的を選択します。(選択肢)
※資料をダウンロードする時のみ選択します。
貴社名会社名を記入します。(一行テキスト)
担当者氏名担当者名を記入します。(一行テキスト)
メールアドレスメールアドレスを記入します。(一行テキスト)
住所住所を記入します。(一行テキスト)
電話番号電話番号を記入します。(一行テキスト)
詳細お問い合わせ内容を記入します。(複数テキスト)
※お問い合わせの時のみ記入します。

情報を記入し送信すると、メールが送信されます。
差出人は全て「TENDA MS Tech」です。

送信されるメールには、以下の件名とフォームで記入した情報が表示されます。

フォームの種類件名
お問い合わせ【お問い合わせがありました】Office 365 / SharePoint 業務改革ソリューション
資料ダウンロード【資料ダウンロードがありました】Office 365 / SharePoint 業務改革ソリューション
ホワイトペーパーダウンロード ホワイトペーパーダウンロードがありました】Office 365 / SharePoint 業務改革ソリューション

SharePointリスト

お問い合わせ情報を登録するSharePointリストは、以下の列で構成されています。

SharePointリストの列内容
タイトルアイテム作成日を記入します。(一行テキスト)
区分お問い合わせ区分を選択します。(選択肢) 選択肢は以下3項目です。
・お問い合わせ
・資料ダウンロード
・ホワイトペーパー
区分2お問い合わせ種別もしくは、資料名を記入します。(一行テキスト)
企業名会社名を記入します。(一行テキスト)
担当者氏名担当者名を記入します。(一行テキスト)
メールアドレスメールアドレスを記入します。(一行テキスト)
詳細お問い合わせ内容を記入します。(複数テキスト)

利用したサービス

お問い合わせ情報をSharePointリストに自動登録するフローを実装するために、以下のサービスを利用します。

利用したサービス内容
Microsoft Power Automate様々なアプリと連携して操作を自動化するサービス
SharePoint Onlineドキュメントや情報を共有するサイトを作成できるサービス

フローの全体的な流れ

今回ご紹介するPower Automateフローの全体的な流れです。

①メールを受信したらフローが実行される
②条件にマッチする差出人メールアドレスのメールかどうかを確認する
③SharePointに登録する値を入れる変数をそれぞれ初期化する
④条件にマッチした場合毎に変数を設定する
⑤変数に設定した値を使ってSharePointリストのアイテムを作成する

トリガー作成

  1. メニューの「作成」から「自動化したクラウド フロー」を選択します。

2.フロー名を任意で記入します。検索欄で「Outlook」と検索し、「新しいメールが届いたとき(V3)」を選択後、「作成」ボタンをクリックします。

3.トリガーが作成されました。

条件にマッチする差出人メールアドレスのメールだった場合、フローを続行

先ほど作成したトリガーのままだと、すべてのメールに対してフローが作動します。問い合わせフォームから送信されたメール以外は、フローの途中でエラーが発生してしまいます。
対策として「条件」アクションを追加し、問い合わせフォームから送信されたメールだった場合にのみフローが続行されるように変更します。

4.「条件」アクションを追加し、メールの差出人に「TENDA MS Tech」アカウントのメールアドレスが含まれているか確認する条件を追加します。

5.「いいえの場合」の中で「終了」アクションを追加します。

上記の設定を行うことで、メールの差出人に「TENDA MS Tech」アカウントのメールアドレスが含まれていないメールではフローが中止されるようになります。

SharePointに登録する値を入れるための変数の初期化

6.「変数を初期化する」アクションを6つ追加します。

7.「名前」を設定し、「種類」はすべて「文字列」にします。

6つのアクションに対し、以下のとおり設定します。

No.設定項目名設定値備考
1区分なし値はあとで設定するため、空の状態にしておきます。
2区分2なし値はあとで設定するため、空の状態にしておきます。
3企業名trim(slice(triggerOutputs()?[‘body/body’], indexOf(triggerOutputs()?[‘body/body’], ‘貴社名:’),  indexOf(triggerOutputs()?[‘body/body’], ‘担当者氏名:’))) メール本文から「貴社名:(記入された企業名)」の文字列を取得します。
4担当者氏名trim(slice(triggerOutputs()?[‘body/body’], indexOf(triggerOutputs()?[‘body/body’], ‘担当者氏名:’),  indexOf(triggerOutputs()?[‘body/body’], ‘メールアドレス:’)))メール本文から「担当者氏名:(記入された担当者氏名)」の文字列を取得します。
5中間データreplace(substring(triggerOutputs()?[‘body/body’], indexOf(triggerOutputs()?[‘body/body’], ‘メールアドレス:’)),decodeUriComponent(‘%0A’),'<br>’)メール本文から「メールアドレス:」以降の文字列を取得し、改行コードを「<br>」に揃えます。
6メールアドレスtrim(split(variables(‘中間データ’), ‘<br>’)[0])変数「中間データ」から「メールアドレス:(記入されたメールアドレス)」の文字列を取得します。

メールの件名に応じて区分を設定し、変数を設定

区分に関する情報はメール本文からは取得できないため、メールの件名から情報を取得し判別します(具体的な設定値は後述)。

8.「条件」アクションを追加します。

9.メールの件名に「ホワイトペーパーダウンロード」が含まれているか確認する条件を追加します。

10.「はいの場合」の中に「変数の設定」アクションを2つ追加し、「名前」にそれぞれ「区分」と「区分2」を設定します。(順不同)

11.「いいえの場合」の中に「条件」アクションを追加します。

12.メールの件名に「資料ダウンロード」が含まれているか確認する条件を追加します。

13.「はいの場合」の中に「変数の設定」アクションを2つ追加し、「名前」にそれぞれ「区分」と「区分2」を設定します。(順不同)

14.「いいえの場合」の中に「変数の設定」アクションを2つ追加し、「名前」にそれぞれ「区分」と「区分2」を設定します。(順不同)

値は以下のとおり設定します。

No.設定項目設定値備考
1変数「区分」値ホワイトペーパーSharePointリストの「区分」列の値と一致するようにする。
2変数「区分2」値trim(slice(triggerOutputs()?[‘body/body’], indexOf(triggerOutputs()?[‘body/body’], ‘資料名:’),  indexOf(triggerOutputs()?[‘body/body’], ‘貴社名:’)))メール本文から「資料名:(記入された資料名)」の文字列を取得します。
3変数「区分」値資料ダウンロードSharePointリストの「区分」列の値と一致するようにする。
4変数「区分2」値trim(slice(triggerOutputs()?[‘body/body’], indexOf(triggerOutputs()?[‘body/body’], ‘資料名:’), indexOf(triggerOutputs()?[‘body/body’], ‘ダウンロードの目的:’)))メール本文から「資料名:(記入された資料名)」の文字列を取得します。
5変数「区分」値お問い合わせSharePointリストの「区分」列の値と一致するようにする。
6変数「区分2」値trim(slice(triggerOutputs()?[‘body/body’], indexOf(triggerOutputs()?[‘body/body’], ‘お問い合わせ種別:’),  indexOf(triggerOutputs()?[‘body/body’], ‘貴社名:’)))メール本文から「お問い合わせ種別:(記入されたお問い合わせ種別)」の文字列を取得します。

変数に設定した値を使ってSharePointリストのアイテムを作成

15.SharePointの「項目の作成」アクションを選択し、各項目に情報を入力します。

設定値は以下の通りです。

No設定項目名設定値備考
1サイトのアドレス(必須)情報格納するSharePointリストがあるサイトを選択します。
2リスト名(必須)情報格納するSharePointリストを選択します。
3タイトルformatDateTime(addHours(utcNow(),9),’yyyy/MM/dd HH:mm:ss’) 現在の時刻を取得します。
4区分 Valuevariables(‘区分’)動的なコンテンツから変数を選択します。
5区分2split(variables(‘区分2’), ‘:’)[sub(length(split(variables(‘区分2’), ‘:’)), 1)]変数「区分2」から記入された資料名もしくはお問い合わせ種別のみを取得します。 例)
入力:お問い合わせ種別:バックアップとアーカイブ(Barracuda)
出力:バックアップとアーカイブ(Barracuda)
6企業名split(variables(‘企業名’), ‘:’)[sub(length(split(variables(‘企業名’), ‘:’)), 1)]変数「企業名」から記入された企業名)のみを取得します。
7担当者氏名split(variables(‘担当者氏名’), ‘:’)[sub(length(split(variables(‘担当者氏名’), ‘:’)), 1)]変数「担当者氏名」から記入された担当者氏名のみを取得します。
8メールアドレスsplit(variables(‘メールアドレス’), ‘:’)[sub(length(split(variables(‘メールアドレス’), ‘:’)), 1)]変数「メールアドレス」から記入されたメールアドレスのみを取得します。
9詳細trim(split(triggerOutputs()?[‘body/body’], ‘————‘)[1])メール本文から’————‘に囲われた文字列を取得します。

設定は以上です。
問い合わせフォームからテスト送信を行い、正しくリストに登録されることを確認します。

まとめ

今回はお問い合わせフォーム記入後に送信されるメールからの情報をSharePointに登録するフローを紹介しました。

データ元はお問い合わせフォームでしたが、フロー自体はメールを受信すると動作するようになっているため、メールの内容などをSharePointで管理したい場合にも使用できるフローだと思います。そのため、似たようなフローを作成される場合の、お役立ちになれましたら幸いです。

関連サイト

Microsoft 365 利活用|株式会社テンダ