#概要
訳あって、大量の二択クイズを整理し、その正解率をはかるためGoogleフォームを使おうという話になりました。うまく正解の選択肢の位置もバラけさせたい。
どうにか楽に処理できないかなぁと思い、スプレッドシートからやったろということでこの記事を書きました。
AF列はメタデータで、ほしいのはBCDE列です。
B列には問題、C列には正答、D列には誤答、E列には解説が書かれています。
ツールタブからスクリプトエディタを開き、Makeform
関数を作ります
コード.gs
function Makeform() {
var ActiveSheet = SpreadsheetApp.getActiveSheet();
var lastRow = ActiveSheet.getLastRow();
var quizdata = [];
//クイズデータの読み取り
quizdata=ActiveSheet.getRange(1,2,lastRow,4).getValues();
//フォームに書き込み
//var form = FormApp.create('二択クイズやろう');
var form = FormApp.openById('xxxxxxPleaseYourFormIDxxxxxxxxxxx');
for(var i = 0;i<quizdata.length;i++){
var choices;
var item = form.addMultipleChoiceItem();//ラジオボタン設置
//選択肢をランダムに
if(Math.random()<0.5){
choices=[
item.createChoice(quizdata[i][1],true),
item.createChoice(quizdata[i][2],false)
];
}else{
choices=[
item.createChoice(quizdata[i][2],false),
item.createChoice(quizdata[i][1],true)
];
}
item.setTitle(quizdata[i][0]).setChoices(choices);//選択肢を付けて作成
item.setPoints(1);//一問一点
item.setRequired(true);//選択強制
item.setFeedbackForCorrect(FormApp.createFeedback().setText(quizdata[i][3]).build());
item.setFeedbackForIncorrect(FormApp.createFeedback().setText(quizdata[i][3]).build());
}
Logger.log(quizdata);
}
これを実行すると、簡単に二択クイズフォームが作れました。
なんか承認がうんたら~みたいなエラーに困ったらここが参考になります。
Google Apps Scriptの初回実行に必要となる承認手順
行を増やせば何問も解かせることができるようになるはず。
いい感じにできました。