GAS Form.addMultipleChoiceItemで成績管理を効率化!教育現場でのアンケート自動化
教育現場における成績管理、出席管理、課題配布は、教職員にとって時間と労力を要する業務です。特に、アンケートやテストの実施、結果の集計には多くの手間がかかります。そこで、Google Apps Script(GAS)のForm.addMultipleChoiceItemを利用することで、これらの業務を大幅に効率化できます。この記事では、GASのForm.addMultipleChoiceItem関数に焦点を当て、教育現場での具体的な利用例と、成績管理を自動化する方法について解説します。
Form.addMultipleChoiceItemとは?
Form.addMultipleChoiceItemは、Googleフォームにラジオボタン形式の質問項目を追加するためのGASの関数です。この関数を利用することで、回答者は複数の選択肢の中から一つを選ぶことができます。アンケートやテストなど、選択式の質問を作成する際に非常に便利です。
関数の基本的な使い方
Form.addMultipleChoiceItem()メソッドは、フォームオブジェクトに対して使用します。基本的な構文は以下の通りです。
Form.addMultipleChoiceItem().setTitle("質問のタイトル").setChoices([FormApp.createChoice("選択肢1"), FormApp.createChoice("選択肢2"), ...]);
このコードは、指定されたタイトルでラジオボタン形式の質問項目をフォームに追加し、指定された選択肢を設定します。
教育現場での実装方法:成績管理、出席管理、課題配布
ここでは、教育現場における具体的な利用シチュエーションとして、成績管理、出席管理、課題配布の3つのケースを取り上げ、Form.addMultipleChoiceItemの実装方法を解説します。
1. 成績管理アンケートの自動作成
定期テストや小テストの自己採点アンケートをGoogleフォームで作成し、生徒に回答してもらうことで、成績データを効率的に収集できます。
実装例:
function createGradingForm() {
// フォームを作成
let form = FormApp.create("小テスト自己採点フォーム");
// 質問1:氏名
form.addTextItem().setTitle("氏名を入力してください");
// 質問2:第1問(複数選択)
form.addMultipleChoiceItem()
.setTitle("第1問:〇〇に当てはまる言葉を選んでください。")
.setChoices([
FormApp.createChoice("選択肢A"),
FormApp.createChoice("選択肢B"),
FormApp.createChoice("選択肢C"),
FormApp.createChoice("選択肢D")
]);
// 質問3:第2問(複数選択)
form.addMultipleChoiceItem()
.setTitle("第2問:〇〇に当てはまる言葉を選んでください。")
.setChoices([
FormApp.createChoice("選択肢A"),
FormApp.createChoice("選択肢B"),
FormApp.createChoice("選択肢C"),
FormApp.createChoice("選択肢D")
]);
// フォームの公開URLをログに出力
Logger.log(form.getPublishedUrl());
}
このコードでは、氏名を入力するテキスト項目と、複数選択形式の質問項目を2つ作成しています。FormApp.createChoice()で選択肢を定義し、setChoices()で質問項目に設定しています。
2. 出席管理フォームの自動作成
毎日の出席確認をGoogleフォームで行い、回答結果をスプレッドシートに自動記録することで、出席状況を簡単に把握できます。
実装例:
function createAttendanceForm() {
// フォームを作成
let form = FormApp.create("出席確認フォーム");
// 質問1:氏名
form.addTextItem().setTitle("氏名を入力してください");
// 質問2:出席状況
form.addMultipleChoiceItem()
.setTitle("本日の出席状況を選択してください。")
.setChoices([
FormApp.createChoice("出席"),
FormApp.createChoice("欠席"),
FormApp.createChoice("遅刻"),
FormApp.createChoice("早退")
]);
// フォームの公開URLをログに出力
Logger.log(form.getPublishedUrl());
}
このコードでは、氏名を入力するテキスト項目と、出席状況を選択するラジオボタン形式の質問項目を作成しています。生徒は「出席」「欠席」「遅刻」「早退」の中から該当するものを選択します。
3. 課題配布確認フォームの自動作成
課題の配布状況や提出状況をGoogleフォームで確認し、未提出者へのリマインドを自動化することで、課題の提出率を向上させることができます。
実装例:
function createAssignmentForm() {
// フォームを作成
let form = FormApp.create("課題提出確認フォーム");
// 質問1:氏名
form.addTextItem().setTitle("氏名を入力してください");
// 質問2:課題提出状況
form.addMultipleChoiceItem()
.setTitle("課題の提出状況を選択してください。")
.setChoices([
FormApp.createChoice("提出済み"),
FormApp.createChoice("未提出")
]);
// フォームの公開URLをログに出力
Logger.log(form.getPublishedUrl());
}
このコードでは、氏名を入力するテキスト項目と、課題の提出状況を選択するラジオボタン形式の質問項目を作成しています。生徒は「提出済み」「未提出」の中から該当するものを選択します。
実用的なコード例とカスタマイズ
上記の例を基に、さらに実用的なコード例とカスタマイズ方法を紹介します。
1. 回答に応じて異なる質問を表示する
Form.addMultipleChoiceItemで得られた回答に応じて、表示する質問を切り替えることができます。例えば、出席状況で「欠席」を選択した場合、欠席理由を尋ねる質問を表示することができます。
実装例:
// 出席確認フォームの作成(一部)
let attendanceItem = form.addMultipleChoiceItem()
.setTitle("本日の出席状況を選択してください。")
.setChoices([
FormApp.createChoice("出席", FormApp.PageNavigationType.SUBMIT), // 出席の場合はフォームを送信
FormApp.createChoice("欠席", FormApp.PageNavigationType.NEXT)
]);
// 欠席理由を尋ねるページを作成
let pageBreak = form.addPageBreakItem().setTitle("欠席理由");
let reasonItem = form.addTextItem().setTitle("欠席理由を入力してください。");
// 「欠席」を選択した場合に欠席理由のページに移動するように設定
attendanceItem.setGoToPage(pageBreak);
このコードでは、「欠席」を選択した場合に、欠席理由を入力するためのページに移動するように設定しています。FormApp.PageNavigationType.NEXTとsetGoToPage()を使用することで、回答に応じて質問を分岐させることができます。
2. スプレッドシートと連携して回答結果を分析する
Googleフォームの回答結果をスプレッドシートに自動的に記録し、GASを使ってデータを分析することができます。例えば、各質問項目の回答数を集計したり、特定の条件に合致する回答を抽出したりすることができます。
実装例:
function analyzeFormResponses() {
// スプレッドシートを開く
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName("回答"); // 回答が記録されたシート名
// フォームの回答を取得
let form = FormApp.openById("フォームのID"); // フォームのID
let responses = form.getResponses();
// 各回答を処理
for (let i = 0; i < responses.length; i++) {
let response = responses[i];
let itemResponses = response.getItemResponses();
// 各質問項目の回答を取得
for (let j = 0; j < itemResponses.length; j++) {
let itemResponse = itemResponses[j];
let question = itemResponse.getItem().getTitle();
let answer = itemResponse.getResponse();
// スプレッドシートに記録(例:A列に質問、B列に回答)
sheet.getRange(i + 2, 1).setValue(question);
sheet.getRange(i + 2, 2).setValue(answer);
}
}
}
このコードでは、フォームの回答をスプレッドシートに記録し、後で分析できるようにしています。SpreadsheetApp.getActiveSpreadsheet()でスプレッドシートを取得し、form.getResponses()でフォームの回答を取得しています。
よくある問題とトラブルシューティング
Form.addMultipleChoiceItemを使用する際に、よくある問題とその解決策を紹介します。
1. 選択肢が正しく表示されない
選択肢が正しく表示されない場合、FormApp.createChoice()で作成した選択肢が正しくsetChoices()に渡されているか確認してください。また、選択肢の数が多すぎる場合、フォームの表示に問題が生じることがあります。選択肢の数を減らすか、質問を分割することを検討してください。
2. 回答がスプレッドシートに正しく記録されない
回答がスプレッドシートに正しく記録されない場合、スプレッドシートのシート名や列番号が正しいか確認してください。また、フォームの回答がスプレッドシートに自動的に記録される設定になっているか確認してください。
3. フォームの動作が遅い
フォームの質問項目が多い場合や、GASの処理が複雑な場合、フォームの動作が遅くなることがあります。質問項目を減らすか、GASの処理を最適化することを検討してください。
まとめ
GASのForm.addMultipleChoiceItemは、教育現場における成績管理、出席管理、課題配布などの業務を効率化するための強力なツールです。この記事で紹介したコード例やカスタマイズ方法を参考に、ぜひGASを活用して、教育現場の業務効率化を実現してください。

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう