GoogleForms не может добавить варианты в MultipleChoiceItem - PullRequest
0 голосов
/ 08 ноября 2018

Я добавляю вопросы с несколькими вариантами ответов в элемент GoogleForm MultipleChoiceItem . То, что происходит, - то, что выборы иногда не привязываются к пункту через API item.setChoices(choices). Поэтому я попытался удалить эти плохие элементы, чтобы избежать их показа в форме, но безуспешно. Это основная функция

function createQuestions() {
  var form = FormApp.getActiveForm();
  form.setShuffleQuestions(false); // true to shuffle responses
  form.setProgressBar(true); // set progress bar
  form.setShowLinkToRespondAgain(true); // show respond again
  form.setLimitOneResponsePerUser(false); // true to limit one response per respondent
  form.setPublishingSummary(true); //show summary
  form.setConfirmationMessage(App.Help.Thankyou);
  //form.setAcceptingResponses(false); // wait until is form is ready

  // clean up
  var items = form.getItems();
  for (var i=0; i<items.length; i++) {
    try {
      form.deleteItem(i);
    } catch(ex) {}
  }

  // import lyrics snippet from dataset
  var dataset=importFromDataset();

  // populate random sample items
  var questionItems=[], sampleItems=[];
  var randomSample='';
  while(sampleItems.length < App.Settings.NumSamples) {
    var newSample='', newItem;
    while(newSample==randomSample || newSample=='') { // get new sample
      newItem = randomElement(dataset);
      newSample = newItem[App.DS.GoldColumn]; //text
    }
    randomSample=newSample;
    sampleItems.push(newItem);
   }

   // create question items
   for(var i=0;i<sampleItems.length;i++) {
     var sampleItem=sampleItems[i];

     if( sampleItem[App.DS.GoldColumn] == '') continue;
     if( sampleItem[App.DS.IndexColumn] == '') continue;

     var item = FormApp.getActiveForm().addMultipleChoiceItem();
     item.setRequired(true);
     item.setTitle( sampleItem[App.DS.GoldColumn] );
     item.setHelpText("["+sampleItem[App.DS.IndexColumn]+"]"); // [id] placeholder
     // add label choices
     var choices=App.DS.labels.map(function(label) {
       return item.createChoice(label);
     });
     item.setChoices(choices);
     Logger.log("item:%s choices:%s",item.getHelpText(),item.getChoices().length);
     if( item.getChoices().length < 1 || item.getHelpText() == '') {
       Logger.log("item:%s removed!",item.getId());
       try {
        form.deleteItem(item);
       } catch(ex) {}
     }
     questionItems.push(item);
   }
   Logger.log("loaded samples:%s questions:%s",sampleItems.length, questionItems.length);
  // form can accept responses
  //form.setAcceptingResponses(true);

}//createQuestions

Я заполняю данные из CSV с помощью importFromDataset, и я заполняю вопросы, выбирая случайные значения из dataset и, в конце концов, пропуская дубликаты. По какой-то причине я не понимаю, что последний журнал дает

[18-11-08 18:02:00:036 CET] item:[24232] choices:5.0
[18-11-08 18:02:01:778 CET] item: choices:5.0
[18-11-08 18:02:03:625 CET] item:[11967] choices:5.0
[18-11-08 18:02:05:225 CET] item:[1670] choices:5.0
[18-11-08 18:02:06:699 CET] item: choices:1.0
[18-11-08 18:02:08:273 CET] item:[4115] choices:5.0
[18-11-08 18:02:10:101 CET] item:[14980] choices:5.0
[18-11-08 18:02:11:873 CET] item: choices:5.0
[18-11-08 18:02:13:548 CET] item:[3420] choices:1.0
[18-11-08 18:02:15:550 CET] item:[5665] choices:5.0
[18-11-08 18:02:15:551 CET] loaded samples:10.0 questions:10.0

, поэтому есть элементы с выбором только 1, в то время как карта массива должна была добавить 5 из константного массива строк в App.DS.labels, вызывая проблему.

...