MultipleChoiceItem.setChoiceValuesで成績を楽々管理!GASで実現する効率的な教育現場
教育現場における成績管理、出席管理、課題配布は、教職員にとって時間と労力を要する業務です。特に、アンケートやテストで複数選択肢の回答を扱う場合、集計作業は煩雑になりがちです。そこで、Google Apps Script(GAS)のMultipleChoiceItem.setChoiceValues
を活用することで、これらの業務を大幅に効率化できます。本記事では、MultipleChoiceItem.setChoiceValues
の基本的な使い方から、教育現場での具体的な活用例、よくある問題とその解決策までを詳しく解説します。
MultipleChoiceItem.setChoiceValuesとは?
MultipleChoiceItem.setChoiceValues
は、Googleフォームの複数選択式質問項目(MultipleChoiceItem)の選択肢を設定するためのGASの関数です。この関数を使用することで、フォームの選択肢を動的に変更したり、スプレッドシートなどの外部データに基づいて選択肢を生成したりすることができます。
基本的な使い方
MultipleChoiceItem.setChoiceValues(choices)
choices
:設定する選択肢の配列。
例:
function setChoices() {
// フォームを取得
const form = FormApp.getActiveForm();
// 質問項目を取得(IDで指定)
const item = form.getItemById(1234567890).asMultipleChoiceItem();
// 選択肢を設定
item.setChoiceValues(["選択肢1", "選択肢2", "選択肢3"]);
}
教育現場での実装方法
ここでは、MultipleChoiceItem.setChoiceValues
を教育現場で活用するための具体的な実装例をいくつか紹介します。
1. 成績管理アンケートの作成
生徒の自己評価や相互評価を収集するためのアンケートフォームを作成し、その結果を成績評価に活用します。選択肢には、評価の段階(例:非常に良い、良い、普通、悪い)を設定し、MultipleChoiceItem.setChoiceValues
を使って動的に変更できるようにします。
function createGradingForm() {
// フォームを作成
const form = FormApp.create("成績評価アンケート");
// 質問項目を作成
const item = form.addMultipleChoiceItem()
.setTitle("自己評価")
.setChoiceValues(["非常に良い", "良い", "普通", "悪い"])
.setRequired(true);
// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}
2. 出席管理フォームの作成
毎日の出席状況を記録するためのフォームを作成します。選択肢には、出席、遅刻、欠席などを設定し、MultipleChoiceItem.setChoiceValues
を使って、日付や時間に応じて選択肢を自動的に更新します。
function createAttendanceForm() {
// フォームを作成
const form = FormApp.create("出席確認フォーム");
// 質問項目を作成
const item = form.addMultipleChoiceItem()
.setTitle("出席状況")
.setChoiceValues(["出席", "遅刻", "欠席"])
.setRequired(true);
// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}
3. 課題配布フォームの作成
課題の提出状況を管理するためのフォームを作成します。選択肢には、未提出、提出済み、再提出などを設定し、MultipleChoiceItem.setChoiceValues
を使って、課題の締め切り日や提出状況に応じて選択肢を更新します。
function createAssignmentForm() {
// フォームを作成
const form = FormApp.create("課題提出状況確認フォーム");
// 質問項目を作成
const item = form.addMultipleChoiceItem()
.setTitle("課題の提出状況")
.setChoiceValues(["未提出", "提出済み", "再提出"])
.setRequired(true);
// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}
実用的なコード例
ここでは、実際の業務で使える、より高度な実装例を紹介します。
例1:スプレッドシートから選択肢を読み込む
スプレッドシートに登録された生徒の名前を、フォームの選択肢として動的に設定する例です。
function setStudentNames() {
// スプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("生徒リスト");
// 生徒の名前を取得(A列)
const names = sheet.getRange("A1:A" + sheet.getLastRow()).getValues().flat();
// フォームを取得
const form = FormApp.getActiveForm();
// 質問項目を取得(IDで指定)
const item = form.getItemById(1234567890).asMultipleChoiceItem();
// 選択肢を設定
item.setChoiceValues(names);
}
例2:日付に応じて選択肢を変更する
日付に応じて、フォームの選択肢を自動的に変更する例です。例えば、出席確認フォームで、日付に応じて「午前」「午後」などの選択肢を切り替えることができます。
function setTimeOptions() {
// 現在の日時を取得
const now = new Date();
const hour = now.getHours();
// 選択肢を定義
let options = [];
if (hour < 12) {
options = ["午前", "欠席"];
} else {
options = ["午後", "欠席"];
}
// フォームを取得
const form = FormApp.getActiveForm();
// 質問項目を取得(IDで指定)
const item = form.getItemById(1234567890).asMultipleChoiceItem();
// 選択肢を設定
item.setChoiceValues(options);
}
よくある問題とトラブルシューティング
- 選択肢が反映されない: フォームのIDや質問項目のIDが正しいか確認してください。また、
setChoiceValues
の引数が配列になっているか確認してください。 - エラーが発生する: GASの実行ログを確認し、エラーメッセージを参考に問題を特定してください。権限設定が適切に行われているか確認してください。
カスタマイズ方法と応用例
- 選択肢の表示順をランダムにする:
Math.random()
を使って選択肢の配列をシャッフルすることで、表示順をランダムにすることができます。 - 特定の条件を満たす場合にのみ選択肢を表示する:
if
文を使って条件分岐を行うことで、特定の条件を満たす場合にのみ選択肢を表示することができます。
まとめ
MultipleChoiceItem.setChoiceValues
は、GASを活用して教育現場の業務を効率化するための強力なツールです。本記事で紹介した例を参考に、ぜひご自身の業務に役立ててください。