このスクリプト extractCorrectAnswers()
は、Googleフォームに含まれるすべての設問について、「問題タイトル」と「正解」を一覧で抽出・表示してくれるツールです。
対応形式は以下のとおり:
- ラジオボタン形式(Multiple Choice)
- チェックボックス形式(Checkbox)
- ドロップダウン形式(List)
- 記述式(Text)にも対応(注:正解設定は不可)
各設問の番号、タイトル、正解(または補足メッセージ)をコンソールに出力します。正解設定がされていない形式でも状況が分かるため、問題管理やレビュー作業に非常に便利です。
🛠 スクリプトの書き方・場所
📌 手順:スクリプトの貼り付け
- Googleフォームを開く
- 右上の「︙(縦3点)」メニューから 「スクリプトエディタ」 を選択
- Google Apps Scriptの画面が開くので、既存コードを削除し、以下のコードを貼り付け
function extractCorrectAnswers() {
const form = FormApp.getActiveForm();
const items = form.getItems();
const correctAnswers = [];
for (let i = 0; i < items.length; i++) {
const item = items[i];
const title = item.getTitle();
let answerText = "";
const type = item.getType();
if (type === FormApp.ItemType.MULTIPLE_CHOICE) {
const mcItem = item.asMultipleChoiceItem();
const choices = mcItem.getChoices();
for (const choice of choices) {
if (choice.isCorrectAnswer()) {
answerText = choice.getValue();
break;
}
}
} else if (type === FormApp.ItemType.CHECKBOX) {
const cbItem = item.asCheckboxItem();
const choices = cbItem.getChoices();
const corrects = choices.filter(c => c.isCorrectAnswer()).map(c => c.getValue());
answerText = corrects.join(", ");
} else if (type === FormApp.ItemType.LIST) {
const listItem = item.asListItem();
const choices = listItem.getChoices();
for (const choice of choices) {
if (choice.isCorrectAnswer()) {
answerText = choice.getValue();
break;
}
}
} else if (type === FormApp.ItemType.TEXT) {
answerText = "(記述式・正解は設定不可)";
} else {
answerText = "(対応していない形式)";
}
correctAnswers.push([i + 1, title, answerText]);
}
console.log("=== 正解一覧 ===");
correctAnswers.forEach(row => {
console.log(`${row[0]}|${row[1]}|正解:${row[2]}`);
});
}
▶ 実行方法
- スクリプトエディタ画面上部の「関数を選択」から
extractCorrectAnswers
を選ぶ - ▶(再生)ボタンをクリック
- 初回実行時は権限認証を求められるので、内容を確認し許可する
- メニューの「表示」→「ログ」から、正解リストを確認!
💡 使いどころ・応用例
- フォームで作成したクイズの答え合わせリストを一括生成
- 自作問題集の正解一覧を出力して教材作成を効率化
- 複数人で問題レビューを行う際の確認ツールとして
- (応用)スプレッドシートに書き出す処理も追加可能!