【PowerAutomate】採点作業を自動化 Formsテスト結果の連絡
こんにちは、ほしコラム管理人の「ほし」です。
今回は、職場の教育テストや学校での小テストで利用できるようなFormsの結果を採点して
不合格者に再テスト依頼を出すフローを紹介していきます。
上記を利用することで、採点時間の短縮と点数が芳しくない人へのフォローがしやすくなります。
はじめに
この記事で解決できることは、以下のようになっています。
- Formsを使用した採点作業を自動化したい
- 採点結果を踏まえて、未合格者に対して再テストの依頼を自動化したい
- PowerAutomateでExcel・Formsの自動化について学びたい
Formsの課題
現状、Formsの「新しいクイズ」を使用して採点やフィードバックコメントを記載できます。
しかし、「解答のレビュー」や「スコアの投稿」は手動で作業することになってしまいます。
PowerAutomateの処理イメージ
今回実装する処理イメージは以下のようになっています。
手動で作業した場合とPowerAutomateで作業した場合でのイメージになります。
簡単に処理を分割すると3つの処理になります。
- Formsの回答を取得
- OfficeScriptsでFormsの回答を採点
- 不合格者に対してメールを送信する
事前準備をすることで、手動で採点している作業が自動化できる、とても楽だと思いませんか?
フロー作成に必要な事前準備
フローを作成するにあたり必要な作業が2つあります。
- テスト用のForms
- 集計用のExcel
そこまで大変な作業ではないので問題ないと思います。
Formsの回答をExcelに転記する方法は、以下に記事を作成してますので参考にしてみてください!
今回作成したFormsとExcel
今回準備したFormsは、第5代までの総理大臣をクイズ形式で出した内容になります。
問題の内容や、出題数は任意の数で良いと思います。
Excelは、Formsの内容を集計できるように事前準備が4つ必要になります。
- シート名を任意の名前に変更する
- テーブルを作成して情報を設定する(列数は、問題数+3)
- テーブル名を任意の名前に変更する
- 正答を準備する
これを準備しておくだけで、PowerAutomateでFormsのテストを採点することができます。
PowerAutomate 処理フロー
今回紹介するPowerAutomateの全体処理フローとしては以下のようになっています。
スクリプトの実行までは、前回紹介している以下の記事を参考にしていただければと思います!
そのため、今回はOfficeScriptsの内容と「条件」以降の内容について詳しく説明していきます。
OfficeScripts 実装内容
OfficeScriptsでは以下のようなソースコードになっています。
- 処理対象のシート名:「テスト結果1回目」
- 更新対象のテーブル:テスト1回目
- 引数(PowerAutomateから渡す値):生徒のForms回答結果、回答者のメールアドレス
- 戻り値(PowerAutomateに返す値):採点結果
今回は、1つのテストを集計する作業を実施しています。
しかし、教科ごとに分けたいや再テストの結果は別のテーブルに場合などは、
Forms毎に「処理対象のシート名」、「更新対象のテーブル」、「引数」、「模範解答」などを変更すれば応用することができます。
1function main(workbook: ExcelScript.Workbook,
2 ans1: string, //解答1
3 ans2: string, //解答2
4 ans3: string, //解答3
5 ans4: string, //解答4
6 ans5: string, //解答5
7 user: string //回答者のメールアドレス
8 ){
9 const sheet = workbook.getWorksheet("テスト結果1回目") ;
10 const value = [ans1,ans2,ans3,ans4,ans5];
11 // 模範回答の範囲を選択
12 //answerは[][]の2重配列の構造になっています
13 const answer = sheet.getRange("M3:M7").getValues();
14 // 点数
15 let score = 0 ;
16 // 採点結果
17 let result = "不合格";
18 // 問題の数だけ繰り返す。配列の添字の開始は0から始まります
19 for (let i = 0; i < value.length; i++) {
20 //模範回答の[i][0]番目を取得
21 let ans = answer[i][0];
22 //模範回答と解答の内容を比較する
23 if ( value[i] == ans){
24 // 合っていたら点数を加算する
25 score = score + 20 ;
26 }
27}
28// 点数が80点以上か比較する
29if (score >= 80){
30 //結果を合格にする
31 result = "合格"
32}
33
34 let table_name = "テスト1回目";
35 // テーブルを取得
36 let table = workbook.getTable(table_name);
37 // テーブルに登録する配列に、点数・結果・メールアドレスを追加する
38 value.push(score.toString(),result,user);
39 // テーブルの行番号を取得
40 let rows = table.getRowCount() - 1;
41
42 // テーブルに値を追加
43 table.addRow(rows, value)
44 // 採点結果をPowerAutomateに返す
45 return result
46}
PowerAutomate 条件
OfficeScriptsの実行結果を踏まえてメールの送信内容を変更するので、「result」の内容を条件の左辺に代入して合否結果を確認するようにしましょう。
「result」は、テストの採点結果になります!
「不合格」の場合に、再テスト依頼のメールの送信を実施します。
「合格」の場合は、合格メールの送信を実施します。
PowerAutomate メールの送信(V2)
条件に一致しても、不一致の場合でもメールの送信を使用するのは、変わらないので設定内容だけ解説します。
- 宛先 : Forms回答者のメールアドレス「Responders’ Email」
- 件名 : お好きな内容を設定してください。
- 本文 : お好きな内容を設定してください。
氏名を取得したい場合などは、メールアドレスと氏名の紐づいたテーブルをExcel上に準備しておくと良いと思います!
さいごに
これまでで、PowerAutomateでFormsを使用したテストを採点する方法について解説してきました。
この記事の内容をもとに指導者・教育者の方々の業務効率化につながればと思います。
PowerAutomateなどを使用した業務効率化について紹介していきますので、ぜひ読んでいただければと思います。
TeamsやSharePoint、ExcelなどOffice製品を使用した業務効率化について紹介しています。