Formsの回答をSharePointリストに格納する | PowerAutomateフローの作成

Power Automate

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

Power Automateで自動転記できるにゃ。

やりたいこと

こんな時に適してます

  • 回答を集計しレポートかして分析したい
  • 回答をSharePointで保管/管理したい
  • 同じような回答があった時に履歴をみたい

それらにあたって、まずはSharePointサイト(以降、SPO)のリストへ転記したい。というのが今回の目的です。

事前準備

Formsを作成する

今回は「社内アンケート」という名前でこのような感じに作成。
上から、日付、選択(1つのみ)、テキスト の形式です。


日付形式も転記できるのか?を確かめたくて回答日の質問も作りましたが、回答日を記録したい場合、この質問は不要です。PowerAutomateフロー内でFormsの提出日時を取得できるので、あえて回答者に日付選択してもらう必要はないです。


設定⚙から[名前を記録]に✓を入れておくと、回答者が都度 名前をいれる手間が省けます◎

SPOのタイムゾーンを確認 / 設定する

SPOサイトはデフォルトでUTCに設定されています。が、日本時間で記録したいので今回は設定を変更。この設定には管理者権限が必要です

  1. SharePoint サイトにアクセス
  2. [歯車アイコン(設定)] > [サイト情報] > [すべてのサイト設定を表示] をクリック
  3. [地域設定] を選択
  4. [タイムゾーン] を希望のタイムゾーンに変更
  5. ページ下部の [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のリストに登録されていました!👏

コメント

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