我尝试过多次下面的代码迭代,但收效甚微。记录器似乎正确显示命令,但表单似乎不执行命令。执行后,表单只生成一个未定义的复选框。
鉴于我必须多次重复此复选框问题,问题措辞略有不同,我正在尝试减少代码占用空间,并希望提高效率。
以下是我失败的代码片段:
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();
答案 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 );