3
votes



I am developing a quiz application. I have some questions with 4 options in my spreadsheet, from that spreadsheet I am generating dynamic/runtime forms, so 50 user have 50 different forms, but I am unable to collect responses to my current quiz sheet.

Code in Google Spreadsheet Script Editor:

    function Quiz(){
       var form = FormApp.create('Quiz');
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       sourceSheet = ss.getSheetByName('Sheet1'),
       sourceRng = sourceSheet.getDataRange(),
       sourceRows = sourceRng.getValues(),
       i;
      for (i = 1; i < sourceRows.length; i += 1)
      {
        count = 0;
        var item = form.addCheckboxItem();
        item.setTitle(sourceRows[i][0]);
         item.setChoices([
            item.createChoice(sourceRows[i][1]),
            item.createChoice(sourceRows[i][2]),
            item.createChoice(sourceRows[i][3]),
            item.createChoice(sourceRows[i][4]),
            item.createChoice(sourceRows[i][5]),
          ]);
       }
}


for a static form I used given below code to get responses, but how can I generate dynamic forms with default setting ( where I have response destination of spreadsheet, username and given code in script editor):

function quizAnswers(){
 var form = FormApp.openById(<<dynamic form ID>>);
 var formResponses = form.getResponses();
 for (var i = 0; i < formResponses.length; i++) {
   var formResponse = formResponses[i];
   var itemResponses = formResponse.getItemResponses();
   for (var j = 0; j < itemResponses.length; j++) {
     var itemResponse = itemResponses[j];
     Logger.log('Response #%s to the question "%s" was "%s"',
         (i + 1).toString(),
         itemResponse.getItem().getTitle(),
         itemResponse.getResponse());
}}}
1
I don't think there is any way to make a form response land natively in a specific sheet. I think you would have to not set a destination type at all, and use GAS to append the form responses "manually".AdamL
Thanks for your reply. will it works, if I use function onSubmit(e) in my current spreadsheet and get all responses and write them in a new sheet, will it work for all users?usadhikari

1 Answers

1
votes

Use this to select for responses of form.

form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());