LoginSignup
16
4

初心者が複数回答のFormsとExcelをPower Automateで連携させた採点処理でハマったところ

Last updated at Posted at 2023-12-06

この記事は、Microsoft Power Automate Advent Calendar 2023
カレンダー1の 12月7日担当分の記事です。

はじめに

こんにちは!okakenです。この記事がQiita初投稿となります。

2023年10月からPower Automateを仕事で使い始めた初心者ですが、
クイズ用のMicrosoft FormsとExcelを連携させる採点処理を作成した際、
苦労した点を共有したいと思います。

ハマったところ:複数回答の選択肢を選んだ時の挙動

複数回答の選択肢に関する問題点を、架空の問題を用いて紹介します。
以下の例では、全ての選択肢にチェックを入れると正解となります。
image.png

複数選択肢の回答がクリックされた順番で記録されることに気づきました。
例えば、福岡→大阪→札幌→東京→京都の順でクリックした場合、下の画像のようになります。
image.png

この状態でもForms単独での採点機能では問題ありませんが、
業務上の目的でPower Automateを使って採点する必要がありました。

Power Automateでは、下の画像の順番とFormsに記入された回答内容の比較を行い、
正解か不正解かを判断する仕組みを採用していました。
このため、Formsの回答内容がクリック順に変わることが課題となりました。
image.png

解決策

Power Automateで回答内容を並び替える方法が何かないかを検索し、
直接的な解決策は見つからなかったものの、
参考となる要素が記載されたページが見つけ、
その要素を組み合わせた以下の手順で問題を解決することができました。

1.Forms側で回答の先頭に数字を付け、ソートできるようにする。

image.png

2.Power Automateで出力される形式を確認する。

image.png

3.SORT関数、SPLIT関数、REPLACE関数を使用して回答内容を配列変数に格納する。

image.png

sort(split(replace(replace(outputs('応答の詳細を取得する')?['body/r47470530c7a74a9f9adbf1d346816cb8'],'[',''),']',''),','))

4.JOIN関数で配列変数から文字列を作成する。

image.png

join(variables('回答'),',')

5.Formsで実際に回答し、各アクションがどのように実行されるかを確認する。

3のアクションの実行結果
image.png

4のアクションの実行結果
image.png

6.全体の流れを以下に示します(採点部分のアクションは省略)。

image.png

参考にさせて頂いたページ

・Formsの応答から回答を取得し、SPLIT関数で配列変数に格納する方法について

・JOIN関数とREPLACE関数の使い方について

・SORT関数の使い方について

さいごに

この記事が同じ問題で困っている方の参考になれば嬉しいです。
現在は、Power Platform関連の知識を深めるため、以下のコミュニティで学んでいます。
初心者の自分でも楽しく学べているので、興味がある方はぜひ参加してみてください!

Microsoft Power Automate Advent Calendar 2023、
カレンダー2はまだ空きがありますので、参加者絶賛募集中です。

16
4
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
16
4