Loading [MathJax]/extensions/tex2jax.js

2023-10-01

GAS:GoogleシートのデータからGoogleフォーム(選択肢問題)を生成する

 講義で選択肢問題を準備する機会が増えてきたので作ってみました。GASです。Googleシートに

  • 問題文
  • 正解選択肢文字
  • 得点
  • 選択肢‥
というならびでシートに作成しておき、下記のGASを動かせば作成できます。注意点は、このサンプルでは、正解選択肢の設定に、正解選択肢文字列との比較を用いていることです。補足すると、このケースでは、選択肢として「アイウエ」という選択肢ラベルのみを用意しています。(アイウエが何を表しているのは問題別紙に書いているということです)

ですので、もし選択肢を単なるアイウエではなく、文字列にしたいなら、2列目は世界選択肢文字ではなく、正解選択肢が何番目なのかを記述して、コードも修正したほうがいいです。(機会があれば、そのバージョンも用意します)

function createQuizForm() {
var row=10; //問題数
var col=7; //シートの列数
var form = FormApp.create('クイズフォーム(自動生成)'); // フォームのタイトルを設定
form.setIsQuiz(true);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//シートのデータを全部取得
var data = sheet.getDataRange().getValues();
for (var i = 1; i <= 10; i++) { // 先頭のヘッダー行をスキップ
var questionTitle = data[i][0]; //1列目に問題文
var correctAnswer = data[i][1]; //正解情報(正解選択肢ラベル)
var point = data[i][2]; // 得点
var choices = data[i].slice(3, col); // 選択肢は2列目から4列目まで
var item = form.addMultipleChoiceItem();
item.setTitle(questionTitle);
var choiceArray = [];
for(var j=0;j<choices.length;j++){
//item.setChoiceValues(choices)
var cTitle=choices[j];
if(choices[j]==correctAnswer){ //正解情報と選択肢ラベルの文字列一致で正解箇所設定
choiceArray.push(item.createChoice(choices[j],true));
}
else{
choiceArray.push(item.createChoice(choices[j],false));
}
}
item.setChoices(choiceArray);
item.setPoints(point);
}
}


0 件のコメント:

コメントを投稿