GASで教育アンケートを効率化!MultipleChoiceItem.setChoiceValuesで成績管理をスマートに
教育現場でのアンケート作成、成績管理、出席管理は時間と労力がかかる作業です。Google Apps Script(GAS)のMultipleChoiceItem.setChoiceValues
を使うことで、これらの業務を大幅に効率化できます。この記事では、教育現場でよくある課題を解決するために、MultipleChoiceItem.setChoiceValues
の具体的な使用例とカスタマイズ方法を解説します。
MultipleChoiceItem.setChoiceValuesとは?
MultipleChoiceItem.setChoiceValues
は、Googleフォームの複数選択式質問項目(MultipleChoiceItem)の選択肢をプログラムで設定するためのGASの関数です。この関数を使うことで、選択肢の内容を動的に変更したり、スプレッドシートなどの外部データから選択肢を読み込んだりすることができます。
教育現場での利用シチュエーション
教育現場では、次のようなシチュエーションでMultipleChoiceItem.setChoiceValues
が役立ちます。
- 成績管理:テストの点数に応じて、合否や評価を自動的に選択肢として表示する
- 出席管理:出席状況に応じて、遅刻理由や欠席理由の選択肢を動的に表示する
- 課題配布:課題の提出状況に応じて、未提出の課題名を選択肢として表示する
- アンケート: 生徒の理解度に応じて設問の選択肢を動的に変える
実装方法
基本的なコード例
まずは、MultipleChoiceItem.setChoiceValues
の基本的な使い方を見てみましょう。
function setChoiceValuesExample() {
// フォームを取得
const form = FormApp.getActiveForm();
// 質問項目を取得(IDは実際のIDに置き換えてください)
const item = form.getItemById(1234567890).asMultipleChoiceItem();
// 選択肢の値を設定
const choices = ['選択肢1', '選択肢2', '選択肢3'];
item.setChoiceValues(choices);
}
このコードは、指定されたIDを持つ複数選択式質問項目の選択肢を、「選択肢1」「選択肢2」「選択肢3」に設定します。
成績管理への応用
テストの点数に応じて、合否や評価を自動的に選択肢として表示する例です。
function setGradeChoices() {
// フォームとスプレッドシートを取得
const form = FormApp.getActiveForm();
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('成績');
// 質問項目を取得(IDは実際のIDに置き換えてください)
const item = form.getItemById(1234567890).asMultipleChoiceItem();
// スプレッドシートから点数を取得(A2セルに点数が入力されていると仮定)
const score = sheet.getRange('A2').getValue();
// 選択肢を決定
let choices = [];
if (score >= 80) {
choices = ['合格', '評価:A'];
} else if (score >= 60) {
choices = ['合格', '評価:B'];
} else {
choices = ['不合格', '再テスト'];
}
// 選択肢を設定
item.setChoiceValues(choices);
}
このコードは、スプレッドシートから点数を取得し、点数に応じて「合格」「不合格」などの選択肢を設定します。
出席管理への応用
出席状況に応じて、遅刻理由や欠席理由の選択肢を動的に表示する例です。
function setAttendanceChoices() {
// フォームを取得
const form = FormApp.getActiveForm();
// 質問項目を取得(IDは実際のIDに置き換えてください)
const item = form.getItemById(1234567890).asMultipleChoiceItem();
// 出席状況を取得(例:別の質問項目で出欠を確認すると仮定)
const attendance = form.getItemById(9876543210).asMultipleChoiceItem().getChoices();
// 選択肢を決定
let choices = [];
if (attendance.includes('遅刻')) {
choices = ['寝坊', '交通機関の遅延', 'その他'];
} else if (attendance.includes('欠席')) {
choices = ['病気', '家庭の事情', '忌引'];
} else {
choices = ['特になし'];
}
// 選択肢を設定
item.setChoiceValues(choices);
}
このコードは、別の質問項目で出欠を確認し、その結果に応じて遅刻理由や欠席理由の選択肢を設定します。
課題配布への応用
課題の提出状況に応じて、未提出の課題名を選択肢として表示する例です。
function setAssignmentChoices() {
// フォームとスプレッドシートを取得
const form = FormApp.getActiveForm();
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('課題提出状況');
// 質問項目を取得(IDは実際のIDに置き換えてください)
const item = form.getItemById(1234567890).asMultipleChoiceItem();
// スプレッドシートから課題提出状況を取得(A列に課題名、B列に提出状況が入力されていると仮定)
const lastRow = sheet.getLastRow();
let choices = [];
for (let i = 2; i <= lastRow; i++) {
const assignmentName = sheet.getRange(i, 1).getValue();
const submissionStatus = sheet.getRange(i, 2).getValue();
if (submissionStatus === '未提出') {
choices.push(assignmentName);
}
}
// 選択肢を設定
item.setChoiceValues(choices);
}
このコードは、スプレッドシートから課題の提出状況を取得し、未提出の課題名を選択肢として設定します。
よくある問題とトラブルシューティング
- 質問項目のIDが間違っている:
form.getItemById()
に渡すIDが正しいか確認してください。 - 選択肢が設定されない:コードの実行権限があるか確認してください。また、
FormApp.getActiveForm()
で正しいフォームを取得できているか確認してください。 - スプレッドシートのデータが正しく読み込まれない:スプレッドシートのIDやシート名が正しいか確認してください。また、データの形式がコードで想定している形式と一致しているか確認してください。
カスタマイズ方法と応用例
- 選択肢の表示順をランダムにする:
choices
配列をシャッフルしてからsetChoiceValues()
に渡すことで、選択肢の表示順をランダムにすることができます。 - 選択肢に画像を表示する:GASでは直接的に選択肢に画像を表示することはできませんが、選択肢のテキストに画像へのリンクを含めることで、擬似的に画像を表示することができます。
- 複数選択肢を必須にする:
MultipleChoiceItem.setRequired(true)
を使用することで、複数選択肢を必須にすることができます。
まとめ
MultipleChoiceItem.setChoiceValues
は、GASを使って教育現場の業務を効率化するための強力なツールです。この記事で紹介したコード例を参考に、ぜひあなたの業務に役立ててください。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう