本記事では、 Microsoft Formsで投稿された質問と、その回答内容を SharePointリストに格納する方法をご紹介します。 質問と回答をデータセットとして残すメリットとして、例えば社内向けのAIチャットボットの元データとして活用することが可能となります。 なお、回答の方法としてメールやTeamsチャット等色々ありますが、今回はPower Appsで回答フォームを用意する形で実装していきます。
目次
1. システムの概要2. 事前準備
3. Power Appsアプリの全体像
4. Power Appsの設定
5. Power Automateフローの全体像
6. Power Automateフローの各種設定
7. 動作確認
1.システムの概要
今回、質問はForms で受け付け 、回答はPower Appsから入力し、それらの情報を SharePointに自動で保存するシステムを構築しました。システム全体の流れは下図の通りです。▼Forms
ユーザーが質問を記入するためのフォームです。
▼Power Apps
回答者が回答を記入するためのフォームです。
▼SharePoint
質問内容と回答内容を保存する役割を持っています。
▼Outlook
回答内容をユーザーに通知するための役割を持っています。
▼Power Automate
Forms、Power Apps、SharePoint、Outlookと連携して図の処理を実行する役割を持っています。
ただし、回答内容をSharePointに保存する処理はPower Appsから行います。
2.事前準備
Power AppsとPower Automateでシステムを構築する前に必要な準備を下記に記載します。▼Forms
回答の入力フォームをFormsで作成します。例として、今回は下図のような内容で作成しました。
▼SharePointリスト
質問内容及び回答内容を格納するために用意します。
列の設定は下記となります。
列名 | 列の種類 | 備考 |
---|---|---|
ID | - | 既定列を使用 |
問合せ者氏名 | 1行テキスト | - |
問合せ者メールアドレス | 1行テキスト | - |
問合せ内容 | 複数行テキスト | 書式なしテキスト |
回答者氏名 | 1行テキスト | - |
回答内容 | 複数行テキスト | 書式なしテキスト |
ステータス | 数値 | - |
ステータス列には0か1のいずれかを入力し、それぞれ以下の意味を持たせ ています。
0:未回答のステータス
1:回答済みのステータス
3.Power Appsアプリの全体像
今回Power Appsで作成するアプリの画面イメージです。計2画面作成します。・一覧画面
未回答の問合せを一覧表示する画面です。
・回答画面
問合せに対する回答の入力フォームです。
4.Power Appsの設定
Power Appsの設定手順について本章に記載します。▼Power AppsとSharePointリストのデータ接続
Power AppsとSharePointリストのデータを連携する手順を下記に記載します。
1.画面左側の[データ]タブをクリックし、[データの追加]をクリックします。
2.検索欄に「SharePoint」と入力し、候補に表示されているSharePointのアイコンをクリックします。
5.事前準備で作成したSharePointリストを選択し、[接続]ボタンをクリックします。
▼一覧画面の作成
1.一覧画面に表示するコントロールを配置します。
No | コントロール名 |
---|---|
1 | ボタン |
2 | データテーブル |
3 | テキストラベル |
2.一覧に表示するコントロールの配置場所やサイズを設定します。
配置場所やサイズは任意で設定してください。
3.コントロールの名前を変更します。
※各コントロールの役割が見えやすいようにするために行います。
変更前 | 変更後 |
---|---|
Button1 | 回答ボタン |
DataTable1 | 問合せ履歴一覧 |
Label1 | タイトルラベル |
3の作業が完了後、Power Appsのツリービュー画面は下記のようになっています。
4.配置した各コントロールのプロパティを変更します。
コントロール名 | プロパティ | 設定値 |
---|---|---|
回答ボタン | Text | "回答" |
回答ボタン | OnSelect | Set(FAQnumber,問合せ履歴一覧.Selected);Navigate(回答画面) |
問合せ履歴一覧 | Items | Filter('ブログ用_問合せ履歴',ステータス = 0) |
タイトルラベル | Text | "問合せ回答フォーム" |
タイトルラベル | Size | 20 |
タイトルラベル | Fill | RGBA(0, 255, 255, 1) |
タイトルラベル | Align | Align.Center |
1~4の作業が完了すると下記のような画面イメージとなります。
▼回答画面の作成
1,回答画面に表示するコントロールを配置します。
No | コントロール名 |
---|---|
1 | ボタン |
2 | 編集フォーム |
2,コントロールの名前を変更します。
※各コントロールの役割が見えやすいようにするために行います。
変更前 | 変更後 |
---|---|
ボタン | 送信ボタン |
編集フォーム | 回答フォーム |
2の作業が完了後、Power Appsのツリービュー画面は下記のようになっています。
3,回答フォームに表示するフィールドが以下になるよう、フィールドを追加/削除します。
No | フィールド名 |
---|---|
1 | 問合せ者氏名 |
2 | 回答者氏名 |
3 | 問合せ者メールアドレス |
4 | 問合せ者内容 |
5 | 回答内容 |
4,画面に表示するコントロールの配置場所やサイズを設定します。
※配置場所やサイズは任意で設定してください。
5.配置した各コントロールのプロパティを変更します。
コントロール名 | プロパティ | 設定値 |
---|---|---|
送信ボタン | OnSelect | Patch('ブログ用_問合せ履歴',LookUp('ブログ用_問合せ履歴',ID = FAQnumber.ID),{回答者氏名:回答者氏名入力.Text,回答内容:回答入力.Text});Navigate(一覧画面) |
送信ボタン | Text | "送信" |
回答フォーム | DataSource | 'ブログ用_問合せ履歴' |
回答フォーム | Item | FAQnumber |
問合せ者氏名_DataCard1 | DisplayMode | DisplayMode.View |
問合せ内容_DataCard1 | DisplayMode | DisplayMode.View |
問合せ者メールアドレス_DataCard1 | DisplayMode | DisplayMode.View |
1~5の作業が完了すると下記のような画面イメージとなります。
5.Power Automateの全体像
今回作成するPower Automateフロー(以下フロー)の全体像です。今回フローは2つあり、それぞれ以下の役割を持っています。フロー1:Formsから送信された質問内容をSharePointに保存する役割
フロー2:Power Appsから送信された回答内容を質問者にメール通知する役割
▼フロー1
フロー1の処理の流れ
1.Formsで質問が送信されたことを検知
2.Formsの記載内容を取得
3.SharePointに1で取得したデータを登録
▼フロー2
フロー2の処理の流れ
1.SharePointでデータが更新されたことを検知
2.質問者にメールを送信
3.SharePointの該当アイテムのステータスを1に更新
6.Power Automateフローの各種設定
フロー1とフロー2の各種設定についてそれぞれ解説します。▼フロー1
①トリガーの設定
トリガーは[新しい応答が送信されるとき]を選択します。
トリガーを選択するとフォームIDを設定する項目が表示されるのでFormsで作成したフォーム名を指定します。
②応答の詳細を取得する
Formsから送信された内容を取得するために[応答の詳細を取得する]アクションを追加します。
フォームIDの項目には事前準備で作成したフォームを指定し、応答IDの項目には下記画像の赤枠に表示されている[Response Id]を指定します。
③項目の作成
SharePointリストにデータを登録するために[項目の作成]アクションを追加し、以下の設定を行います。
設定値
No | 項目 | 設定値 | 備考 |
---|---|---|---|
1 | Site Address | リストを作成したサイト | |
2 | List Name | 事前準備で作成したリスト | |
3 | 問合せ者氏名 | <氏名> | 動的なコンテンツの「応答の詳細を取得する」から選択 |
4 | 問合せ者メールアドレス | <メールアドレス> | 動的なコンテンツの「応答の詳細を取得する」から選択 |
5 | 問い合わせ内容 | <質問内容> | 動的なコンテンツの「応答の詳細を取得する |
6 | ステータス | 0 |
▼フロー2
①トリガーの設定
トリガーは[アイテムが作成または変更されたとき]アクションを選択し、以下の設定を行います。
設定値
No | 項目 | 設定値 |
---|---|---|
1 | Site Address | リストを作成したサイト |
2 | List Name | 事前準備で作成したリスト |
また、フローの無限ループを回避するために[設定]タブのトリガーの条件に以下の式を記入します。
設定値
No | 式 | 意味 | 備考 |
---|---|---|---|
1 | @equals(triggerBody()?['Status'],0) | [ステータス]列が0(=未回答)の場合にフローが起動 | Statusの部分には[ステータス]列の内部名を記載 |
2 | @not(empty(triggerBody()?['AnsBody'])) | [回答内容]列の値が空でない場合にフローが起動 | AnsBodyの部分には[回答内容]列の内部名を記載 |
※今回のような[+追加]ボタンを押して条件式を複数書く場合、条件は「AND」条件となります。
OR条件を行いたい場合、「@or(条件1,条件2)」という形で記述します。
②メールの送信 (V2)
質問者に回答をメールで送信するために[メールの送信 (V2)]アクションを追加し、以下の設定を行います。
設定値
No | 項目 | 設定値 | 備考 |
---|---|---|---|
1 | To | <問合せ者メールアドレス> | |
2 | Subject | (メール件名を記入) | |
3 | Body | 問い合わせ内容<問合せ内容> 回答内容<回答内容> | <問合せ内容>、<回答内容>はどちらも動的なコンテンツの「アイテムが作成または変更されたとき」から選択 |
4 | From(Send as) | (差出人のメールアドレス) | 任意のアドレスを記載 |
③項目の更新
SharePointリストの該当アイテムのステータスを回答済み(=1)に更新するために[項目の更新]アクションを追加し、以下の設定を行います。
設定値
No | 項目 | 設定値 | 備考 |
---|---|---|---|
1 | サイトのアドレス | リストを作成したサイト | |
2 | リスト名 | 事前準備で作成したリスト | |
3 | ID | <ID> | 動的なコンテンツの「アイテムが作成または変更されたとき」から選択 |
4 | ステータス | 1 |
7.動作確認
一通り、システムを構築したので実際の動きを確認します。Power Automateの実行履歴からフロー①の処理が成功したことを確認します。
Formsに記載した内容がSharePointリストの格納されたことを確認します。
Power Appsを起動して一覧画面より該当のアイテムを選択し、[回答]ボタンをクリックします。
回答画面より氏名と回答内容をクリックし、[送信]ボタンをクリックします。
Power Automateの実行履歴からフロー②の処理が成功したことを確認します。
SharePointに回答のデータが格納されたことを確認し、Power Appsの一覧画面から表示されなくなったことを確認します。
以上より、質問の起票~回答の送付/保存まで動作が一通り問題なく完了したことを確認できました。
最後に
テンダでは、「こんなプロジェクトに挑戦したい」「こんなチームで働きたい」「理想のチームを創りたい」と願う仲間を求めています。
カジュアル面談も随時受付中です。ぜひ一度お話ししましょう。
募集職種一覧
カジュアル面談の申込
テンダで働く人や社風について