Google Form/Appscript 如何按回答跳转分区或实现级联下拉?
Google Form 级联下拉选择需求实现方案
你提出的两个待落地需求均可实现,其中跳转预置分区的备选方案无需代码、完全适配你可视化创建下拉控件的要求,是最优适配方案,具体实现步骤如下:
方案1:基于回答跳转预置分区方案(无代码、推荐)
该方案完全基于Google Form原生功能实现,无需编写任何代码,所有下拉控件均可以通过可视化工具提前创建:
- 步骤1:创建对应子区域的独立分区
- 打开你的Google Form,按照现有Area的数量,新增3个独立分区,分别命名为「A1子区域选择」、「A2子区域选择」、「A3子区域选择」
- 在每个分区内通过可视化工具创建对应Sub-area的下拉选择框,提前预置好匹配的选项:A1分区下拉预置SA1、SA2,A2分区下拉预置SA3,A3分区下拉预置SA4
- 将所有子区域分区的后续跳转规则统一设置为「提交表单」或你需要的下一个公共分区,避免跳转逻辑混乱
- 步骤2:配置区域下拉的跳转规则
- 打开第一个Area下拉的问题编辑页,勾选底部「根据回答跳转至分区」的选项
- 逐一对每个Area选项配置跳转规则:选择A1跳转至「A1子区域选择」分区,选择A2跳转至「A2子区域选择」分区,选择A3跳转至「A3子区域选择」分区
- 将Area所在分区的默认后续跳转设置为「提交表单」,避免未选择时出现逻辑错误
配置完成后即可直接测试,用户选择对应区域后会自动进入对应子区域选择页,完全符合你的业务需求。
方案2:动态填充下拉选项方案
注意:Google Form原生不支持用户填写过程中实时修改已有控件的选项,该方案仅适用于表单预填充场景,如果你需要用户填写时实时联动,优先选择方案1。
实现步骤如下:
- 步骤1:获取表单内下拉控件的ID
打开Google Form,点击右上角三个点选择「脚本编辑器」,运行以下代码,在执行日志中获取两个下拉问题的ID值:function getQuestionIds() { const form = FormApp.getActiveForm(); const allItems = form.getItems(); allItems.forEach(item => { console.log(`问题标题:${item.getTitle()},控件ID:${item.getId()}`); }) } - 步骤2:编写动态更新选项的脚本
替换代码中的对应控件ID、区域映射关系后,可按需触发脚本来更新第二个下拉的选项:function updateSubAreaOptions(selectedArea) { // 区域与子区域的映射关系 const areaMap = { "A1": ["SA1", "SA2"], "A2": ["SA3"], "A3": ["SA4"] } const form = FormApp.getActiveForm(); // 替换为你实际的子区域下拉控件ID const subAreaQuestion = form.getItemById(123456789).asListItem(); subAreaQuestion.setChoiceValues(areaMap[selectedArea] || []); }
内容的提问来源于stack exchange,提问作者Teo
相关产品推荐
相关产品推荐

