Google Forms API页面导航(跳转章节)未按配置生效问题排查
Google Forms API 创建表单时导航选项显示异常问题解决思路
问题描述
使用Google Forms API创建表单,设置了「提交表单」选项,其余选项用于跳转到对应章节收集信息。但表单创建后,原本应指向Section 2的最后一个选项,打开时却显示为「提交表单」,不符合预期。
相关代码
function SampleFormCreation() { var sampleForm = FormApp.create('Sample form lu.c.n'); sampleFormUrl = sampleForm.getEditUrl(); var item = sampleForm.addMultipleChoiceItem(); item.setTitle('Choose one') .setChoiceValues(['p1', 'p2', 'p3']) .setRequired(true); item = sampleForm.addDateItem(); // Add Page break and dropdown menu mainPage = sampleForm.addPageBreakItem().setTitle('Main Page'); sampleSelectionItem = sampleForm.addListItem().setTitle('sample selection') .setRequired(true); var pages = []; var itemChoices = []; // Add one page for each blood measure that can be a number greater than zero or a multiple choice for (var i = 0; i < 3; i++) { pages[i] = sampleForm.addPageBreakItem().setTitle( 'Option' + (i+1)); item = sampleForm.addTextItem(); item.setTitle('option' + (i+1)).setRequired(false); pages[i].setGoToPage(mainPage); } // Add the dropdown choices for blood Test selection. First option should be "Submit Form" itemChoices.push(sampleSelectionItem.createChoice('Submit Form', FormApp.PageNavigationType.SUBMIT)); for (i = 0; i < 3; i++) { itemChoices.push(sampleSelectionItem.createChoice('option' + (i+1), pages[i])); } sampleSelectionItem.setChoices(itemChoices); }
解决思路
调整提交选项的位置:
目前「提交表单」是下拉菜单的第一个选项,尝试将其移到最后。Google Forms UI对首选项的提交导航可能存在特殊处理,修改代码中选项添加顺序:// 先添加页面跳转选项,最后添加提交选项 for (i = 0; i < 3; i++) { itemChoices.push(sampleSelectionItem.createChoice('option' + (i+1), pages[i])); } itemChoices.push(sampleSelectionItem.createChoice('Submit Form', FormApp.PageNavigationType.SUBMIT));验证页面绑定的正确性:
在创建页面和绑定选项的循环中添加日志,确认每个选项绑定的页面是否正确:for (var i = 0; i < 3; i++) { pages[i] = sampleForm.addPageBreakItem().setTitle( 'Option' + (i+1)); item = sampleForm.addTextItem(); item.setTitle('option' + (i+1)).setRequired(false); pages[i].setGoToPage(mainPage); Logger.log('创建页面:' + pages[i].getTitle() + ',索引:' + i); } // 绑定选项时添加日志 for (i = 0; i < 3; i++) { var choice = sampleSelectionItem.createChoice('option' + (i+1), pages[i]); itemChoices.push(choice); Logger.log('绑定选项:option' + (i+1) + '到页面:' + pages[i].getTitle()); }运行代码后查看App Script日志,确认绑定关系无错位。
排查表单缓存问题:
删除当前异常表单,重新运行代码创建新表单;或使用无痕浏览器打开表单,排除UI缓存导致的显示异常。确认页面创建顺序:
通过API获取所有分页,检查页面顺序是否符合预期:var pageBreaks = sampleForm.getItems(FormApp.ItemType.PAGE_BREAK); pageBreaks.forEach(function(page, index) { Logger.log('分页[' + index + ']:' + page.getTitle()); });确保
pages数组中的每个元素对应正确的分页项。
内容的提问来源于stack exchange,提问作者lu.c.n
相关产品推荐
相关产品推荐

