使用GAS维护Google表单跳转规则时报错:list.createChoice is not a function
问题分析与修复方案
错误根源
你代码里的list1是选项值的数组,而createChoice()是MultipleChoiceItem对象的专属方法,数组没有这个方法,所以触发TypeError。另外list是所有多选项目的数组,不能直接调用setChoices(),必须操作单个多选项目实例。
修复后的代码
function GoToPage() { var form = FormApp.openById('你的表单ID'); // 获取目标多选问题的实例(第一个多选项目) var mcItem = form.getItems(FormApp.ItemType.MULTIPLE_CHOICE)[0].asMultipleChoiceItem(); // 获取当前多选问题的所有选项值 var choiceValues = mcItem.getChoices().map(choice => choice.getValue()); // 获取对应的分页跳转目标 var pagelist = form.getItems(FormApp.ItemType.PAGE_BREAK); // 根据实际表单分页位置调整索引,以下对应4个选项的跳转目标 var pagebreak01 = pagelist[2].asPageBreakItem(); var pagebreak02 = pagelist[3].asPageBreakItem(); var pagebreak03 = pagelist[4].asPageBreakItem(); var pagebreak04 = pagelist[5].asPageBreakItem(); // 创建带跳转规则的选项数组 var choices = []; choices.push(mcItem.createChoice(choiceValues[0], pagebreak01)); choices.push(mcItem.createChoice(choiceValues[1], pagebreak02)); choices.push(mcItem.createChoice(choiceValues[2], pagebreak03)); choices.push(mcItem.createChoice(choiceValues[3], pagebreak04)); // 给多选问题设置新的选项(包含跳转规则) mcItem.setChoices(choices); }
关键修正点
- 用
mcItem(多选项目实例)调用createChoice(),而非选项值数组choiceValues - 直接对单个多选项目实例调用
setChoices(),而非多选项目数组 - 补充了第四个选项的跳转设置(匹配你提到的四个选项需求)
额外注意事项
- 务必把
openById的参数替换成你的实际表单ID - 分页索引(
pagelist[2]等)需要根据你表单的实际分页位置调整,避免索引越界 - 可以给这个函数设置自动触发器,在Form Ranger填充完成后自动运行,维持跳转设置
内容的提问来源于stack exchange,提问作者秋意寒
相关产品推荐
相关产品推荐

