【问题标题】:Conversion of a Google Form ItemType via Apps Script通过 Apps 脚本转换 Google 表单项类型
【发布时间】:2019-08-13 21:11:57
【问题描述】:

我在 Google 表单上有一个销售商品的表单。我知道这不是最好的解决方案,但我的新客户已经在使用它,所以现在不值得改变,我们计划进一步这样做。

代码现在做什么?

我设置了一张表格,其中存储了有关产品的信息,例如名称、价格和可用数量。当有人在表单中提交响应时,脚本会从那个人那里获取订单并更新工作表和表单的“前端”。表格由 ScaleItem 问题组成,从 0 到 6,除非可用数量低于 6。发生这种情况时,代码会更改比例范围,因此不可能出现超额预订。

问题是:

当可用库存为 1 或 2 时,我需要更改 ItemType,因为 ScaleItem 要求至少有 4 个数字(0 到 3)。

我查看了文档、谷歌甚至这里,但没有找到切换 ItemType 的解决方案。

这是我目前拥有的代码,原样。我正在尝试替换该项目,但这不是一个好的解决方案,因为它会在表单响应表中创建一个新列。

var form = FormApp.openById(form_id);
var item = form.getItemById(item_id);
var choices = [];
for (var p = 0; p <= stock; p++) {
  choices.push(p);
}
if (stock <= 2) {
  if (item.getType() === FormApp.ItemType.MULTIPLE_CHOICE) {  
    item.asMultipleChoiceItem().setChoiceValues(choices);
  } else if (item.getType() === FormApp.ItemType.SCALE) {
    //
    // THIS IS WHERE THE ITEM SHOULD GET CONVERTED TO MULTIPLE CHOICE
    // it is provisionally creating a new item
    //
    // item.asMultipleChoiceItem().setChoiceValues(choices); <= NOT VALID CONVERSION ERROR
    var ii = item.getIndex();
    var title = item.getTitle();
    form.deleteItem(item);
    var new_item = form.addMultipleChoiceItem()
      .setTitle(title)
      .setChoiceValues(choices);
    form.moveItem(new_item, ii); // this line gets error - still working on
  }
} else if (stock <= 6) {
  item.asScaleItem().setBounds(0, stock);
} else {
  item.asScaleItem().setBounds(0, 6)
}

感谢任何帮助。

【问题讨论】:

标签: google-apps-script google-forms


【解决方案1】:

无法转换 FormApp.ItemType

如果有帮助,ScaleItem 所需的最少选项数是两个而不是四个(1 到 2)。

否则,您为什么不首先将项目声明为不同的类型,而不是转换?如果多项选择对于大数字来说过于庞大,也许您可​​以将ItemType设置为List

【讨论】:

  • 是的,我注意到我可以使用比例项目下降到 2,但它应该能够达到 0 到 1 的比例。通过使用 ListItem 类型,我确实按照您建议的方式解决了它。谢谢!
猜你喜欢
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
相关资源
最近更新 更多