
Formsのアンケート結果をSharePointに記録したいな。

Power Automateで自動転記できるにゃ。
やりたいこと

◎こんな時に適してます
- 回答を集計しレポートかして分析したい
- 回答をSharePointで保管/管理したい
- 同じような回答があった時に履歴をみたい
それらにあたって、まずはSharePointサイト(以降、SPO)のリストへ転記したい。というのが今回の目的です。
事前準備
Formsを作成する
今回は「社内アンケート」という名前でこのような感じに作成。
上から、日付、選択(1つのみ)、テキスト の形式です。

日付形式も転記できるのか?を確かめたくて回答日の質問も作りましたが、回答日を記録したい場合、この質問は不要です。PowerAutomateフロー内でFormsの提出日時を取得できるので、あえて回答者に日付選択してもらう必要はないです。
設定⚙から[名前を記録]に✓を入れておくと、回答者が都度 名前をいれる手間が省けます◎

SPOのタイムゾーンを確認 / 設定する
SPOサイトはデフォルトでUTCに設定されています。が、日本時間で記録したいので今回は設定を変更。この設定には管理者権限が必要です。
- SharePoint サイトにアクセス
- [歯車アイコン(設定)] > [サイト情報] > [すべてのサイト設定を表示] をクリック
- [地域設定] を選択
- [タイムゾーン] を希望のタイムゾーンに変更
- ページ下部の [OK] をクリックして保存
SPOにリストを作成する
今回はこのような感じで作成。
- タイトル:デフォルトで作成される列。Formsの回答者の格納先。
- Date:日付形式。Formsの回答日の格納先。
- Q2:1行テキスト。FormsのQ2「満足度は?」の回答格納先。
- Q3:複数行テキスト。FormsのQ3「自由記述」の回答格納先。

フローの作成
全体像
全体としてはこんな感じ。
ただ転記するだけなのでシンプルなフローです。Formsの回答がきたことをトリガーに、回答内容を取得し、SPOのリストに登録する(=項目を作成する)という流れです。

トリガー | 新しい応答が送信されるとき
1.[自動化したクラウドフローを構築する]から進み、以下のようにフローを作成する。
- フロー名:任意
- フローのトリガー:新しい応答が送信されるとき

2.「新しい応答が送信されるとき」アクションのフォームIDを開き、事前に作成したForms(社内アンケート)を選択する。

作成したFormsがプルダウンに出てこない場合、Formsへの接続がうまくいっていない可能性ありです。
一度フローを保存 > マイフローを開く > 該当のフローをクリック し、「接続」の編集画面でFormsとSharePointに接続されていることを確認します。

アクション1 | 応答の詳細を取得する
1.アクションを追加する。
Formsで検索し、「応答の詳細を取得する」を選択する。
2.「フォームID」のプルダウンから作成したForms(社内アンケート)を選択する。
3.「応答ID」には動的コンテンツから「応答ID」を選択する。

アクション2 | 項目の作成
1.アクションを追加する。
SharePointで検索し、「項目の作成」を選択する。
2.「サイトのアドレス」のプルダウンから、登録先のサイト(https://~~FruitCompany)を選択する。
3.「リスト名」のプルダウンから、登録先のリスト(In-house_questionnarie)を選択する。

4.オプションとしてリストの列が出てくるので、各列に格納したい情報を動的コンテンツから選択する。

◎Formsの回答日時を登録したい時
上図では「Date」列に「回答日」が登録されるようになっています。が、これでは回答者が間違った回答日をいれてしまう可能性が…
Formsの回答が来た日時を登録するには「送信時刻(Submission time)」を使います。
ただし、Formsから取得されるのはUTC時間なので、そのままではSPOリストに登録したときに日本時間で表示されません。
といことで、式を使って時刻の表示のしかたを変えます。
4-1.式を開く。
4-2.FormatDateTimeを入力する。

4-3.()を入力し、「動的なコンテンツ」から「送信時刻(Submission time)」を選択する。

4-4.[‘body/submitDate’]のうしろに ‘yyyy-MM-ddTHH:mm:ssZ’ をつけて、日時の表示形式を指定する。式の全体はこんな感じ。
formatDateTime(outputs('応答の詳細を取得する')?['body/submitDate'], 'yyyy-MM-ddTHH:mm:ssZ')
SPOではタイムゾーンを日本に設定しています。
そうすると、受け取った時刻を「よし、日本時間に直したる。これたぶんUTCだろな。」といった感じで直してくれます。
なので、SPOに日時を渡すときには、どこのタイムゾーンなのかを明確にする必要があります。
今回はFormsから受け取った日時がUTCだったので、「これはUTCですよ!」とSPOに伝えるために ‘yyyy-MM-ddTHH:mm:ssZ‘ とタイムゾーン表記をつけます。
5.[保存]をして完了。
実行結果
Formsに回答してみると…

ちゃんとSPOのリストに登録されていました!👏

コメント