Google 如果不为 null 或为空,则添加 createChoice

Google form add createChoice if not null or empty

我正在尝试向工作表上可用的 google 表单添加一些值。我的脚本看起来像,

for(var i=0;i<numberRows;i++){

    if (myShuffled[i][0] == myAnswers[i][0]) {

      var addItem = form.addMultipleChoiceItem();

      addItem.setTitle(myQuestions[i][0])

      .setPoints(1)

      .setChoices([
       
        addItem.createChoice(myShuffled[i][0],true),
         
        addItem.createChoice(myShuffled[i][1]),

        addItem.createChoice(myShuffled[i][2]),

        addItem.createChoice(myShuffled[i][3]),

        addItem.createChoice(myShuffled[i][4]),
         
        addItem.createChoice(myShuffled[i][5]),
         
        addItem.createChoice(myShuffled[i][6])

      ]);

    }
....
....

例如我需要添加 myShuffled[i][1] 仅当不为 null 或空时。

我认为您的目标和现状如下。

  • myShuffled[i][#] 既不是 null 又不为空时,您想放置 addItem.createChoice
  • 在您当前的问题中,当myShuffled[i][#]不是null或不为空时,空的选择被放置。

修改点:

  • 在这种情况下,我想建议在 setChoices 为 运行 之前创建用于放入 addMultipleChoiceItem() 的选择值。

修改后的脚本:

当您的脚本修改时,请修改如下。

for(var i = 0; i < numberRows; i++) {
  if (myShuffled[i][0] == myAnswers[i][0]) {
    var addItem = form.addMultipleChoiceItem();
    var values = myShuffled[i].reduce((ar, e, i) => {
      if (e != null && e != "") ar.push(addItem.createChoice(e, ar.length == 0 ? true : false));
      return ar;
    }, []);
    addItem.setTitle(myQuestions[i][0]).setPoints(1).setChoices(values);
  }
}

注:

  • 在这种情况下,请通过启用 V8 运行time 使用脚本。

参考: