Formsに回答があったらSharePointリストに登録した人にTeamsでメンションする方法

Power Automate
ゆり
ゆり

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リストの「不具合・エラー報告」で設定していた責任者と担当者にメンションがいきました。

コメント

タイトルとURLをコピーしました