ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

Microsoft Forms で作ったクイズの得点をPower Automate で使用する

趣旨

Microsoft Forms のクイズ作成機能を使ってフォームを作成します。

この機能で作成した問題には正解を設定することができます。
回答者がフォームへの入力を確定すると設問ごとの正解or不正解が判定され、合計点数が自動で算出されます。

算出された合計点数を使って、点数が基準点を超えたときに何らかのアクションを実行するフローを作成するのが今回の目的です。

例として、60点を超えたら回答者に合格通知メールを自動送信するフローを作成します。
f:id:wataruf01:20220321232715p:plain

Power Automate でフローを作成する

Power Automate でフローを作成します。

フォームへの回答をフローのトリガーにします。
次に「応答の詳細を取得する」アクションを使って情報を取得します。

「応答の詳細を取得する」アクションで取得できる情報は以下の通りです。
・回答者が入力した回答内容
・回答者のメールアドレス
・回答日時

「応答の詳細を取得する」アクションで返される情報には"点数"が含まれません。

そのため、このままでは今回の目的である"点数が基準点を超えたときに何らかのアクションを実行する"が実現できません。
f:id:wataruf01:20220321232742p:plain

解決策:フローのアクションを使って点数を算出する

概要

Forms から直接点数を取得できないのでフロー内で点数計算を行います。
各設問の正答を変数として取得しておき、条件分岐を使って回答の正誤判定を行います。
正解したときは合計得点に加点します。

事前準備

各設問の回答をテキスト形式で取得します。
「応答の詳細を取得する」アクションで各設問の値を変数として取得するアクションを作成します。
f:id:wataruf01:20220321232800p:plain

アクションが作成できたら、「トリガー アクションを実行する」を選択して「保存&テスト」をクリックします。
f:id:wataruf01:20220321232816p:plain

回答フォームを開いて満点の回答を入力します。
f:id:wataruf01:20220321232829p:plain

フローの実行が完了したら、結果画面から値をコピーしてメモに控えます。
f:id:wataruf01:20220321232840p:plain

メモに控えました。
f:id:wataruf01:20220321232852p:plain

実装

得点を表す変数を作成します。
「変数を初期化する」アクションを使います。
f:id:wataruf01:20220321232903p:plain

設問の正答を表す変数を作成します。

「変数を初期化する」アクションを使います。
値に先ほどメモに控えたテキストを転記します。
f:id:wataruf01:20220321232959p:plain

ちなみに、上図の値はチェックボックス形式の回答をテキストに表したものです。
回答が複数項目にわたる場合はテキストはアレイ形式の記述になります。
f:id:wataruf01:20220321233012p:plain

正誤を判定する条件分岐を作成します。

「条件」アクションを使います。
左のボックスには回答者が入力した回答をいれます。
右のボックスには先ほど変数化した正答をいれます。
f:id:wataruf01:20220321233028p:plain

正解した際に点数に加点をする処理を作成します。

「変数の値を増やす」アクションを使います。
f:id:wataruf01:20220321233040p:plain

同様にすべての設問分だけアクションを追加します。
f:id:wataruf01:20220321233051p:plain

得点が基準点を超えた場合のアクションを追加します。
今回は、回答者へのメール通知アクションを使います。
f:id:wataruf01:20220321233106p:plain

動作確認

動作確認をします。
試しに80点をとってみました。
f:id:wataruf01:20220321233120p:plain

期待通りメールが届きました。
f:id:wataruf01:20220321233130p:plain