0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Formsからの質問及び回答をデータとして残す方法

Last updated at Posted at 2025-10-09

本記事では、 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に自動で保存するシステムを構築しました。システム全体の流れは下図の通りです。

システム構成図.png

▼Forms
ユーザーが質問を記入するためのフォームです。

▼Power Apps
回答者が回答を記入するためのフォームです。

▼SharePoint
質問内容と回答内容を保存する役割を持っています。

▼Outlook
回答内容をユーザーに通知するための役割を持っています。

▼Power Automate
Forms、Power Apps、SharePoint、Outlookと連携して図の処理を実行する役割を持っています。
ただし、回答内容をSharePointに保存する処理はPower Appsから行います。

2.事前準備

Power AppsとPower Automateでシステムを構築する前に必要な準備を下記に記載します。

▼Forms
回答の入力フォームをFormsで作成します。例として、今回は下図のような内容で作成しました。
Forms画面.png


▼SharePointリスト
質問内容及び回答内容を格納するために用意します。
SharePointリスト.png

列の設定は下記となります。

列名 列の種類 備考
ID - 既定列を使用
問合せ者氏名 1行テキスト -
問合せ者メールアドレス 1行テキスト -
問合せ内容 複数行テキスト 書式なしテキスト
回答者氏名 1行テキスト -
回答内容 複数行テキスト 書式なしテキスト
ステータス 数値 -

ステータス列には0か1のいずれかを入力し、それぞれ以下の意味を持たせ ています。
0:未回答のステータス
1:回答済みのステータス

3.Power Appsアプリの全体像

今回Power Appsで作成するアプリの画面イメージです。計2画面作成します。

・一覧画面
未回答の問合せを一覧表示する画面です。
Power Apps一覧.png


・回答画面
問合せに対する回答の入力フォームです。
Power Apps回答.png

4.Power Appsの設定

Power Appsの設定手順について本章に記載します。

▼Power AppsとSharePointリストのデータ接続
Power AppsとSharePointリストのデータを連携する手順を下記に記載します。

1.画面左側の[データ]タブをクリックし、[データの追加]をクリックします。
データ接続1.png

2.検索欄に「SharePoint」と入力し、候補に表示されているSharePointのアイコンをクリックします。
データ接続2.png

3.SharePointのアイコンを再度クリックします。
データ接続3.png

4.対象のサイトを選択します。
データ接続4.png

5.事前準備で作成したSharePointリストを選択し、[接続]ボタンをクリックします。
データ接続5.png

▼一覧画面の作成
1.一覧画面に表示するコントロールを配置します。

No コントロール名
1 ボタン
2 データテーブル
3 テキストラベル

2.一覧に表示するコントロールの配置場所やサイズを設定します。
配置場所やサイズは任意で設定してください。

3.コントロールの名前を変更します。
※各コントロールの役割が見えやすいようにするために行います。

変更前 変更後
Button1 回答ボタン
DataTable1 問合せ履歴一覧
Label1 タイトルラベル

3の作業が完了後、Power Appsのツリービュー画面は下記のようになっています。
一覧画面1.png

4.配置した各コントロールのプロパティを変更します。

コントロール名 プロパティ 設定値
回答ボタン Text "回答"
回答ボタン OnSelect Set(FAQnumber,問合せ履歴一覧.Selected);Navigate(回答画面)
問合せ履歴一覧 Items Filter('ブログ用_問合せ履歴',ステータス = 0)
タイトルラベル Text "問合せ回答フォーム"
タイトルラベル Size 20
タイトルラベル Fill RGBA(0, 255, 255, 1)
タイトルラベル Align Align.Center

1~4の作業が完了すると下記のような画面イメージとなります。
一覧画面イメージ吹き出し.png

▼回答画面の作成
1,回答画面に表示するコントロールを配置します。

No コントロール名
1 ボタン
2 編集フォーム

2,コントロールの名前を変更します。
 ※各コントロールの役割が見えやすいようにするために行います。

変更前 変更後
ボタン 送信ボタン
編集フォーム 回答フォーム

2の作業が完了後、Power Appsのツリービュー画面は下記のようになっています。
回答画面1.png

3,回答フォームに表示するフィールドが以下になるよう、フィールドを追加/削除します。

No フィールド名
1 問合せ者氏名
2 回答者氏名
3 問合せ者メールアドレス
4 問合せ者内容
5 回答内容

回答画面2.png

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の作業が完了すると下記のような画面イメージとなります。
回答画面イメージ吹き出し.png

5.Power Automateの全体像

今回作成するPower Automateフロー(以下フロー)の全体像です。今回フローは2つあり、それぞれ以下の役割を持っています。
フロー1:Formsから送信された質問内容をSharePointに保存する役割
フロー2:Power Appsから送信された回答内容を質問者にメール通知する役割

▼フロー1
フロー①.png
フロー1の処理の流れ
1.Formsで質問が送信されたことを検知
2.Formsの記載内容を取得
3.SharePointに1で取得したデータを登録

▼フロー2
フロー②.png
フロー2の処理の流れ
1.SharePointでデータが更新されたことを検知
2.質問者にメールを送信
3.SharePointの該当アイテムのステータスを1に更新

6.Power Automateフローの各種設定

フロー1とフロー2の各種設定についてそれぞれ解説します。

▼フロー1
①トリガーの設定
トリガーは[新しい応答が送信されるとき]を選択します。
トリガーを選択するとフォームIDを設定する項目が表示されるのでFormsで作成したフォーム名を指定します。
フロー①-1.png

②応答の詳細を取得する
Formsから送信された内容を取得するために[応答の詳細を取得する]アクションを追加します。
フォームIDの項目には事前準備で作成したフォームを指定し、応答IDの項目には下記画像の赤枠に表示されている[Response Id]を指定します。
フロー①-2.png

③項目の作成
SharePointリストにデータを登録するために[項目の作成]アクションを追加し、以下の設定を行います。
フロー①-3.png

設定値

No 項目 設定値 備考
1 Site Address リストを作成したサイト
2 List Name 事前準備で作成したリスト
3 問合せ者氏名 <氏名> 動的なコンテンツの「応答の詳細を取得する」から選択
4 問合せ者メールアドレス <メールアドレス> 動的なコンテンツの「応答の詳細を取得する」から選択
5 問い合わせ内容 <質問内容> 動的なコンテンツの「応答の詳細を取得する
6 ステータス 0

▼フロー2
①トリガーの設定
トリガーは[アイテムが作成または変更されたとき]アクションを選択し、以下の設定を行います。
フロー②-1.png
設定値

No 項目 設定値
1 Site Address リストを作成したサイト
2 List Name 事前準備で作成したリスト

また、フローの無限ループを回避するために[設定]タブのトリガーの条件に以下の式を記入します。
フロー②-1補足.png

設定値

No  意味 備考
1 @equals(triggerBody()?['Status'],0) [ステータス]列が0(=未回答)の場合にフローが起動 Statusの部分には[ステータス]列の内部名を記載
2 @not(empty(triggerBody()?['AnsBody'])) [回答内容]列の値が空でない場合にフローが起動 AnsBodyの部分には[回答内容]列の内部名を記載

※今回のような[+追加]ボタンを押して条件式を複数書く場合、条件は「AND」条件となります。
OR条件を行いたい場合、「@or(条件1,条件2)」という形で記述します。

②メールの送信 (V2)
質問者に回答をメールで送信するために[メールの送信 (V2)]アクションを追加し、以下の設定を行います。
フロー②-2.png

設定値

No 項目 設定値 備考
1 To <問合せ者メールアドレス>
2 Subject (メール件名を記入)
3 Body 問い合わせ内容<問合せ内容> 回答内容<回答内容> <問合せ内容>、<回答内容>はどちらも動的なコンテンツの「アイテムが作成または変更されたとき」から選択
4 From(Send as) (差出人のメールアドレス) 任意のアドレスを記載

③項目の更新
SharePointリストの該当アイテムのステータスを回答済み(=1)に更新するために[項目の更新]アクションを追加し、以下の設定を行います。
フロー②-3.png

設定値

No 項目 設定値 備考
1 サイトのアドレス リストを作成したサイト
2 リスト名 事前準備で作成したリスト
3 ID <ID> 動的なコンテンツの「アイテムが作成または変更されたとき」から選択
4 ステータス 1

7.動作確認

一通り、システムを構築したので実際の動きを確認します。

Formsに情報を入力し、[送信]ボタンをクリックします。
動作確認1.png

Power Automateの実行履歴からフロー①の処理が成功したことを確認します。
動作確認2.png

Formsに記載した内容がSharePointリストの格納されたことを確認します。
動作確認3.png

Power Appsを起動して一覧画面より該当のアイテムを選択し、[回答]ボタンをクリックします。
動作確認4.png

回答画面より氏名と回答内容をクリックし、[送信]ボタンをクリックします。
動作確認5.png

Power Automateの実行履歴からフロー②の処理が成功したことを確認します。
動作確認6.png

SharePointに回答のデータが格納されたことを確認し、Power Appsの一覧画面から表示されなくなったことを確認します。
動作確認7.png
動作確認8.png

質問者宛てにメール通知がされたことを確認します。
動作確認9.png

以上より、質問の起票~回答の送付/保存まで動作が一通り問題なく完了したことを確認できました。

最後に

テンダでは、「こんなプロジェクトに挑戦したい」「こんなチームで働きたい」「理想のチームを創りたい」と願う仲間を求めています。 カジュアル面談も随時受付中です。ぜひ一度お話ししましょう。
募集職種一覧
カジュアル面談の申込
テンダで働く人や社風について

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?