使用withItemResponse响应复选框

时间:2017-07-14 05:36:45

标签: google-apps-script

我的问题是:

const answers = sheet.getSheetValues(2, 2, sheet.getLastRow()-1, sheet.getLastColumn()-1); // Get the information from the sheet formResponse[i].withItemResponse(items[19].asCheckboxItem().createResponse( answers[i][17])); // add a response to formResponse ,it is a checkbox item

答案[i] [17]实际上是一个对象。它的值为“FALSE”。我收到这个错误:

Cannot find method createResponse(string).

即使我写了false / true或“false”/“true”或其他内容,createResponse也会错误地拒绝它。当我使用布尔时,我使用布尔版本采用相同的错误。 我应该如何添加复选框作为回复?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我用一种奇怪的方式解决了这个问题。码: if(answers[i][17] == true) formResponse[i].withItemResponse(items[19].asCheckboxItem().createResponse( new Array(items[19].asCheckboxItem().getChoices()[0].getValue() )));

背后的原因:

您需要提供字符串数组,而不是字符串本身。字符串必须是复选框标题,不是true或false。因为我们可以添加多个复选框,当涉及复选框响应时,我们如何选择哪一个是真还是假?所以我采取了选择,因为我有一个选择,而不是在循环中使它成为字符串数组我决定只使用第一项。由于我有一个项目,因此数组有一个元素。但它是选择数组,所以我拿了第一个字符串,我把它放在一个新的数组中。在这里,你有一个字符串数组。对于多个检查,您可以创建一个循环来迭代选择数组并将它们的值(字符串)添加到新数组中。像:

var strArray = new Array(choiceArray.length);
for(var i=0; i < choiceArray.length; ++i)
  strArray[i] = choiceArray[i];

你可以禁用一些让它取消选中。这只是一种方式,你可以做更高效的版本。

PS:我认为谷歌应用程序脚本有一些东西可以强制开发人员编写无效且代码太多的代码。但最后,基本系统运行良好,实际上如果我们中的一些人决定使用另一种语言或框架,它可能会慢得多。