如何使用For循环创建Google表单复选框选项

时间:2013-06-20 21:03:52

标签: google-apps-script

我尝试过多次下面的代码迭代,但收效甚微。记录器似乎正确显示命令,但表单似乎不执行命令。执行后,表单只生成一个未定义的复选框。

鉴于我必须多次重复此复选框问题,问题措辞略有不同,我正在尝试减少代码占用空间,并希望提高效率。

以下是我失败的代码片段:

    var storerangestart = 9901;
    var storerangeend = 9999;
    page402_cbitem1.setTitle('What stores do you have allocated for this project?');
    var page402array = 'page402_cbitem1.setChoices([\n';
    for (var i = storerangestart; i < storerangeend; i++) {
      var storerangecurrent = i + "";
      page402array += 'page402_cbitem1.createChoice(' + storerangecurrent + '),\n';
    }
    page402array += 'page402_cbitem1.createChoice(' + storerangeend + ')\n]);';
    Logger.log(page402array);
    page402array();

1 个答案:

答案 0 :(得分:3)

Logger没有显示命令,它会显示一个字符串。您的代码创建了一个字符串,其中包含看起来像代码的文本,但无法直接在Google Apps脚本中执行该字符串的内容。

你有一个好主意 - 你只是试图处理错误的对象类型。

查看CheckboxItem.setChoices()的定义,您会看到它将一系列选项作为参数。示例代码可能会抛出你,因为它在.setChoices()方法调用中创建了项元素:

item.setChoices([
    item.createChoice('Cats'),
    item.createChoice('Dogs')
]);

您可以通过这种方式实现相同的结果:

var choices = [];                           // create a new array of choices
choices.push( item.createChoice('Cats') );  // Add 'Cats'
choices.push( item.createChoice('Dogs') );  // Add 'Dogs'
item.setChoices( choices );                 // set the array of choices

这为您正在考虑的循环设置了机会。您需要调用各种对象方法来首先构建一个选择数组,然后将该数组指定为表单项的选项,而不是构建包含代码的字符串:

var storerangestart = 9901;
var storerangeend = 9999;
page402_cbitem1.setTitle('What stores do you have allocated for this project?');
var page402array = [];
for (var i = storerangestart; i < storerangeend; i++) {
  var storerangecurrent = i + "";
  page402array.push( page402_cbitem1.createChoice( storerangecurrent ) );
}
Logger.log( page402array );
page402_cbitem1.setChoices( page402array );