
Formsで問い合わせフォームを作成し、回答があったらSharePointリストに予め登録した、カテゴリ別の責任者と担当者にTeamsチャネルでメンションする方法を紹介します!

フロー全体図

前準備
Forms
Formsで以下のような問い合せフォームを作成します。
質問名 | 質問の種類 |
問い合わせカテゴリを選択してください。 | 選択肢 |
問い合わせ内容を入力してください。 | テキスト(長い回答) |

SharePointリスト
以下のようなSharePointリストを作成します。
列名 | 列の型 |
タイトル | 1行テキスト |
Sekinin | ユーザーまたはグループ列 |
Tanto | ユーザーまたはグループ列 |
タイトル列の値は、Formsアンケートの「問い合わせカテゴリを選択してください。」と同じ内容になるようにしてください。

Sekinin列に責任者、Tanto列に担当者をいれてみました。
各カテゴリ(タイトル)に対して、責任者と担当者がいる設定にします。
Sekinin列とTanto列を作成するときは、まず英語で作成してください。
この後のPower Automateで、英語列の方が混乱が少ないためです。
後から列名を日本語に変更いただいて構いません。
フローの作り方
新しい応答が送信されるとき

トリガーは、Microsoft Formsの「新しい応答が送信されるとき」にします。
フォームIDは、前準備で作成したFormsフォームを指定してください。
応答の詳細を取得する

Microsoft Formsの「応答の詳細を取得する」アクションを追加し、以下パラメーターを設定します。
フォーム ID | 前準備で作成したFormsフォーム |
応答 ID | 新しい応答が送信されるときの「応答 ID」 |
ユーザー プロフィールの取得 (V2)

Office 365 ユーザーの「ユーザー プロフィールの取得 (V2)」アクションを追加し、以下パラメーターを設定します。
ユーザー(UPN) | 応答の詳細を取得するの「Responders’ Emai」 |
Formsで回答した人の部署、役職、メールアドレスを取得するためにこのアクションを追加しています。
複数の項目の取得

SharePointの「複数の項目の取得」アクションを追加し、以下パラメーターを設定します。
サイトのアドレス | 前準備で作成したSharePointリストがあるSharePointサイト |
リスト名 | 前準備で作成したSharePointリスト |
フィルタークエリには、Title eq ” までを入力し、”の間に、「応答の詳細を取得する」アクションの「問い合わせカテゴリを選択してください」を設定してください。

一応式も表記しておきます。
Title eq 'outputs('応答の詳細を取得する')?['body/ra06b9c1063294f93badb412f635954f5']'
フィルタークエリを使うことで、SharePointリストのタイトル列と、Formsの「問い合わせカテゴリを選択してください。」で選択された値が一致したレコードだけを取得します。
作成(改行用)

データ操作の「作成」アクションを追加し、入力にEnterキーを押して改行されたものを作成します。
この後に「作成」アクションをもう一つ追加するので、わかりやすくアクション名を「作成:改行」に変更します。
作成(置換用)

データ操作の「作成」アクションを追加し、入力に以下式を設定します。
(わかりやすくアクション名は「作成:置換」にしています。)
replace(outputs('応答の詳細を取得する')?['body/r0847ab4c45d34fe3b0083e104233fa2d'],outputs('作成:改行'),'<br>')
上2つの作成アクションは、Formsの「問い合わせ内容を入力してください」が改行が含まれたテキストだった場合、Teamsにも改行付きで投稿するために必要なアクションになります。
ユーザーの @mention トークンを取得する(責任者用)

Microsoft Teamsの「ユーザーの @mention トークンを取得する」アクションを追加します。
(わかりやすくアクション名の文頭に「責任者:」をつけています。)
ユーザーには、以下式を入力します。
first(outputs('複数の項目の取得')?['body']?['value'])?['Sekinin']?['Email']
first関数は、「For each」アクションができてしまうことを防ぐために利用しています。
ouputs関数は、「複数の項目の取得」でフィルターされた行から、Sekinin列のメールアドレスを取得します。

ユーザーの @mention トークンを取得する(担当者用)

Microsoft Teamsの「ユーザーの @mention トークンを取得する」アクションを追加します。
(わかりやすくアクション名の文頭に「担当者:」をつけています。)
ユーザーには、以下式を入力します。
first(outputs('複数の項目の取得')?['body']?['value'])?['Tanto']?['Email']
first関数は、「For each」アクションができてしまうことを防ぐために利用しています。
ouputs関数は、「複数の項目の取得」でフィルターされた行から、Tanto列のメールアドレスを取得します。

チャットまたはチャネルでメッセージを投稿する

Microsoft Teamsの「チャットまたはチャネルでメッセージを投稿する」アクションを追加します。
各パラメーターは以下に設定します。
投稿者 | ユーザー ※フローボットでもいいのですが、件名がつけられないので今回はユーザーにします。 |
チーム | メッセージを投稿したいチーム |
チャネル | メッセージを投稿したいチャネル |
メッセージは以下のように動的なコンテンツを設定しています。

件名は以下のように動的なコンテンツを設定しています。

実際に実行してみる
Formsで問い合わせカテゴリを「サービスの使い方」にして、回答を送信してみました。

Teamsチャネルに投稿され、SharePointリストの「サービスの使い方」で設定していた責任者と担当者にメンションがいきました。

今度は、問い合わせカテゴリを「不具合・エラー報告」にしてみます。

Teamsチャネルに投稿され、SharePointリストの「不具合・エラー報告」で設定していた責任者と担当者にメンションがいきました。

コメント