我可以使用Google Apps脚本使Google表单显示来自Google表格的随机文本吗?

问题描述 投票:1回答:1

说,我在Google表格中列出了1000种动物(例如,狗,猫,牛,...,长颈鹿)。我希望Google表单在每次受访者打开表单时都会随机选择其中一种动物。

例如,您见过__________吗?

这里,每个受访者的空白都会不同(除非他们很幸运能够随机获得匹配的动物)。

我目前拥有从Google表格中随机选择动物的代码,但是我无法弄清楚如何为每个响应者随机选择动物,因为onOpen()函数无法为每个响应者触发,而是仅在所有者打开表单。

function onOpen(e){
  var animals = worksheet.getRange(2, 1, worksheet.getLastRow()-1, 1)
              .getValues()
              .map(function(o){ return o[0]})
              .filter(function(o){return o !== ""});
  //Logger.log(animals)

  // get random animal
  var animal = animals[Math.floor(Math.random()*animals.length)];

  Logger.log(animal);
  var id = getBlockIdFromTitle()
  Logger.log(id) 

  if (id !== -1){
    updateLink(id, animal)
  }
}

关于如何更改代码或采用完全不同的方法来获得相同结果的任何建议,将不胜感激。谢谢!

google-apps-script google-sheets google-form
1个回答
0
投票

代替onOpen触发器,使用installable onFormSubmit触发器

这将使您可以在受访者提交表单后更新表单问题。

示例:

function onFormSubmit(e){
  var animals = worksheet.getRange(2, 1, worksheet.getLastRow()-1, 1)
              .getValues()
              .map(function(o){ return o[0]})
              .filter(function(o){return o !== ""});
  //Logger.log(animals)

  // get random animal
  var animal = animals[Math.floor(Math.random()*animals.length)];
  FormApp.openById("XXX").getItems()[0].asTextItem().setTitle("Have you ever seen a " + animal + "?");
  }
}

Mind:

  • 由于问题只会在表单提交时进行更新,因此将在之前的受访者完成提交之前打开表单的受访者不会看到该表单的其他版本。

  • 但是,目前没有其他选项可以动态更改每个受访者的问题内容。

  • 如果对您有帮助-shuffle问题顺序的选项和对不同受访者的回答选项。

© www.soinside.com 2019 - 2024. All rights reserved.