使用Apps Script实现表单提交功能的问题
问题分析与解决方案
你的问题核心是没有正确将提交导航绑定到表单项目上——你只是写出了FormApp.PageNavigationType.SUBMIT这个常量,但没有通过对应方法把它应用到grid item之后的流程中。当前代码里所有页面元素是依次串联的,用户填完一个grid后会自动跳到下一个页面,而非提交。
修正后的代码
function myFunction() { var form = FormApp.create('Scores Form').setDescription('Description'); var item = form.addMultipleChoiceItem(); const createChoiceArray = []; const pageConfig = {'page-one':['row-one','row-two'],'page-two':['row-one','row-two'],'page-three':['row-one','row-two']}; for(const pageKey in pageConfig){ const rowItems = pageConfig[pageKey]; // 添加页面分隔符,作为单选选项的跳转目标 const pageBreak = form.addPageBreakItem().setTitle(pageKey); // 创建grid评分项 const gridItem = form.addGridItem() .setTitle(`Scores for ${pageKey}`) .setRequired(true) .setColumns(['Did not attend', 'slightly/not engaged in activity','moderately engaged in activity', 'very engaged in activity']) .setRows(rowItems); // 关键修改:设置grid项填写完成后直接提交表单 gridItem.setGoToPage(FormApp.PageNavigationType.SUBMIT); // 将单选选项与对应页面分隔符绑定 createChoiceArray.push(item.createChoice(pageKey, pageBreak)); } // 给单选项设置所有选项 item.setChoices(createChoiceArray); }
关键修改说明
- 绑定提交导航到grid项:在每个
gridItem创建完成后,调用setGoToPage(FormApp.PageNavigationType.SUBMIT),这会让用户填写完当前grid后直接触发表单提交,不会继续跳转后续页面。 - 规范变量声明:把
create_choice_array改成createChoiceArray并使用const声明,避免全局变量泄漏。 - 简化字符串拼接:用模板字符串
${pageKey}替代concat,代码更简洁直观。
修改后,用户选择任意单选选项跳转到对应页面,填写完grid后就会直接提交表单,完全符合你的需求。
内容的提问来源于stack exchange,提问作者waluigiwah
相关产品推荐
相关产品推荐

