GASで課題の選択肢を動的に変更!CheckboxItem.setChoiceValuesで教育現場を効率化
教育現場における課題配布やアンケートにおいて、回答の選択肢を柔軟に変更したいと思ったことはありませんか?例えば、課題の進捗状況に応じて選択肢を変えたり、生徒の理解度に合わせて回答の選択肢を調整したりするなど、動的な選択肢の変更は、より効果的な教育活動を支援します。Google Apps Script(GAS)のCheckboxItem.setChoiceValues
を使えば、これが簡単に実現できます。
CheckboxItem.setChoiceValuesとは?
CheckboxItem.setChoiceValues
は、Googleフォームのチェックボックス形式の質問項目に対して、選択肢を動的に設定するためのGASの関数です。この関数を使用することで、スプレッドシートなどの外部データに基づいて選択肢を生成したり、条件に応じて選択肢を変更したりすることが可能になります。
基本的な使い方
基本的な使い方は以下の通りです。
// フォームを取得
const form = FormApp.openById("フォームのID");
// チェックボックスの質問項目を取得
const item = form.getItemById("質問項目のID").asCheckboxItem();
// 設定する選択肢の配列
const choices = ["選択肢1", "選択肢2", "選択肢3"];
// 選択肢を設定
item.setChoiceValues(choices);
上記のコードでは、フォームのIDと質問項目のIDを指定して、チェックボックスの質問項目を取得し、setChoiceValues
関数を使って選択肢を設定しています。
教育現場での活用例
教育現場では、CheckboxItem.setChoiceValues
を様々な場面で活用できます。以下に、具体的な例をいくつか紹介します。
課題の進捗管理
課題の進捗状況に応じて、選択肢を動的に変更することができます。例えば、未着手、着手、完了といった選択肢を用意し、生徒が課題を提出するたびに、スプレッドシートのデータを更新し、フォームの選択肢を自動的に変更することができます。
// スプレッドシートから課題の進捗状況を取得する関数
function getTaskProgress() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("進捗状況");
const lastRow = sheet.getLastRow();
const data = sheet.getRange(2, 1, lastRow - 1, 2).getValues(); // 2列のデータを取得(課題名と進捗状況)
const progress = {};
data.forEach(row => {
progress[row[0]] = row[1]; // 課題名をキー、進捗状況を値とするオブジェクトを作成
});
return progress;
}
// フォームの選択肢を更新する関数
function updateFormChoices() {
const form = FormApp.openById("フォームのID");
const item = form.getItemById("質問項目のID").asCheckboxItem();
const progress = getTaskProgress();
const choices = Object.keys(progress).map(task => `${task} (${progress[task]})`); // 課題名と進捗状況を組み合わせた選択肢を作成
item.setChoiceValues(choices);
}
上記のコードでは、getTaskProgress
関数でスプレッドシートから課題の進捗状況を取得し、updateFormChoices
関数でフォームの選択肢を更新しています。Object.keys(progress).map
を使用することで、課題名と進捗状況を組み合わせて表示することができます。
アンケートの回答状況に応じた選択肢の変更
アンケートの回答状況に応じて、選択肢を動的に変更することができます。例えば、特定の回答をした生徒に対して、より詳細な質問を表示したり、理解度に応じて選択肢の難易度を調整したりすることができます。
// スプレッドシートからアンケートの回答状況を取得する関数
function getSurveyResults() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("回答");
const lastRow = sheet.getLastRow();
const data = sheet.getRange(2, 1, lastRow - 1, 2).getValues(); // 2列のデータを取得(生徒名と回答)
const results = {};
data.forEach(row => {
results[row[0]] = row[1]; // 生徒名をキー、回答を値とするオブジェクトを作成
});
return results;
}
// フォームの選択肢を更新する関数
function updateFormChoicesBasedOnAnswers() {
const form = FormApp.openById("フォームのID");
const item = form.getItemById("質問項目のID").asCheckboxItem();
const results = getSurveyResults();
// 回答状況に基づいて選択肢を動的に生成するロジックを実装
let choices = [];
for (let student in results) {
if (results[student] === "はい") {
choices = ["詳細な質問1", "詳細な質問2", "詳細な質問3"]; // 「はい」と答えた生徒への選択肢
} else {
choices = ["基本的な質問1", "基本的な質問2", "基本的な質問3"]; // 「いいえ」と答えた生徒への選択肢
}
item.setChoiceValues(choices); // 各生徒に対して選択肢を設定(実際にはループ内で生徒ごとにフォームを出し分ける必要がある)
}
}
上記のコードでは、getSurveyResults
関数でスプレッドシートからアンケートの回答状況を取得し、updateFormChoicesBasedOnAnswers
関数でフォームの選択肢を更新しています。回答状況に応じて選択肢を切り替えるロジックを実装することで、よりパーソナライズされたアンケートを実施することができます。ただし、上記の例では、生徒ごとにフォームを出し分ける必要があるため、実際には、回答に基づいてフォームを出し分ける処理を追加する必要があります。
よくある問題とトラブルシューティング
- 選択肢が更新されない:フォームのIDや質問項目のIDが間違っている可能性があります。正しいIDを確認してください。
- エラーが発生する:GASの実行権限が不足している可能性があります。GASの実行権限を確認し、必要な権限を付与してください。
- 選択肢が重複する:スプレッドシートのデータに重複がある可能性があります。スプレッドシートのデータを確認し、重複を削除してください。
カスタマイズ方法と応用例
- 選択肢の表示順をランダムにする:
Math.random()
関数を使用して、選択肢の表示順をランダムにすることができます。 - 選択肢を画像にする:
setChoiceValues
関数ではなく、setChoices
関数とChoice
オブジェクトを使用することで、選択肢を画像にすることができます。 - 選択肢を動的に生成する:外部APIからデータを取得し、そのデータに基づいて選択肢を生成することができます。
まとめ
GASのCheckboxItem.setChoiceValues
関数を使用することで、教育現場における課題配布やアンケートにおいて、回答の選択肢を動的に変更することができます。これにより、生徒の進捗状況や理解度に合わせて、より効果的な教育活動を支援することができます。ぜひ、CheckboxItem.setChoiceValues
を活用して、教育現場の効率化と質の向上を目指してください。
未経験からSNSデザインを学び、在宅ワークで収入を得たい方へ。
Flap DESIGNは、デザインスキルから案件獲得までを徹底サポートするオンラインスクールです。現役プロがマンツーマンで指導するため、挫折しにくい環境が強み。
さらに、受講期間中に案件を獲得できなかった場合は、売上が立つまで営業サポート期間を延長する「売上保証制度」も魅力です。
副業として月8〜20万円を目指したい会社員の方、出産・育児を機に新しい働き方を求める方、フリーランスとして独立を目指す方など、ライフスタイルに合わせた働き方を実現したい方にぴったりのサービスです。まずは無料相談で詳細を聞いてみませんか?
未経験から始める!SNSデザインスクール