b.m
b.m

Reputation: 89

how to create Multiple choice google form from spreadsheet

I would like to create a MCQ from an existing spreadsheet that has this type of data :

Question    Choice 1 (correct answer)   Choice 2    Choice 3    Choice 4
Question 1  a                            b                 c    d
Question 2  d                            a                 b    c
Question 3  b                            a                 b    c

Thank you for your answer Chris, but this code :

function createForm(){
var form = FormApp.create('New Form');

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange(2, 1, sheet.getLastRow());
var values = range.getValues();

for (var i = 0; i < values.length; i++) {
form.addMultipleChoiceItem()
   .setTitle(values[i][1])
   .setChoiceValues([values[i][2],values[i][3],values[i][4]]); //Make another loop here if your Answers counts are different
}
}

displays unfilled questions, something like this : Form1 But what I would like to create should look like this at the end : Form2

Upvotes: 0

Views: 909

Answers (2)

b.m
b.m

Reputation: 89

Here what i have came out as a soultion :

    function createForm(){
var form = FormApp.create('New Form');

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange(2, 1, sheet.getLastRow());
var values = range.getValues();

 var ansRange1 = sheet.getRange(2, 2, sheet.getLastRow());
 var ansValues1 = ansRange1.getValues();

var ansRange2 = sheet.getRange(2, 3, sheet.getLastRow());
var ansValues2 = ansRange2.getValues();

var ansRange3 = sheet.getRange(2, 4, sheet.getLastRow());
var ansValues3 = ansRange3.getValues();

var ansRange4 = sheet.getRange(2, 5, sheet.getLastRow());
var ansValues4 = ansRange4.getValues();

for (var i = 0; i < (values.length)-1; i++) {
   form.addMultipleChoiceItem()
   .setTitle(values[i])
   .setChoiceValues([ansValues1[i],ansValues2[i],ansValues3[i],  ansValues4[i] ]); //Make another loop here if your Answers counts are different
}
}

But I'm still strugling how to make a correct answer and to give a number of point to the correct answer : without having to these two steps manually from forms. So if someone can help me figure that out he is more than welcome!

Upvotes: 0

Chris Chen
Chris Chen

Reputation: 1293

https://developers.google.com/apps-script/reference/forms/

 var form = FormApp.create('New Form');

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];

 var range = sheet.getRange(2, 1, sheet.getLastRow());
 var values = range.getValues();

for (var i = 0; i < values.length; i++) {
    form.addMultipleChoiceItem()
       .setTitle(values[i][1])
       .setChoiceValues([values[i][2],values[i][3],values[i][4]]); //Make another loop here if your Answers counts are different
}

Upvotes: 1

Related Questions