如何通过脚本设置Google Forms答案的页面跳转及提交规则
Google表单列表选项的跳转与提交逻辑实现
我有一段可正常运行的代码,能从Google表格读取数据更新表单的列表选项,但不知道如何设置选项的跳转规则——除最后一个选项外,其余选项选择后跳转到下一节,最后一个选项选择后直接提交表单。
以下是修改后实现需求的完整代码:
function updateFormChoices() { try { // 表格信息 var spreadsheetId = "这里填你的表格ID"; var sheetName = "Sheet1"; var columnBValues = getSpreadsheetValues(spreadsheetId, sheetName, "B"); // 表单信息 var formId = "这里填你的表单ID"; var questionTitle = "Which of the following streams do you prefer over the other?"; // 可根据需求修改为中文标题 // 打开目标表单 var form = FormApp.openById(formId); // 获取所有列表类型的题目 var items = form.getItems(FormApp.ItemType.LIST); // 根据标题定位目标题目 var item; for (var i = 0; i < items.length; i++) { if (items[i].getTitle() === questionTitle) { item = items[i].asListItem(); break; } } // 打印读取到的选项值 console.log("B列读取到的值: " + columnBValues.join(", ")); // 创建带导航规则的选项 var choices = []; for (var j = 0; j < columnBValues.length; j++) { var choice = item.createChoice(columnBValues[j]); if (j < columnBValues.length - 1) { // 非最后一个选项:选择后跳转到下一节 choice.getPageNavigationItem().setGoToPage(FormApp.PageNavigationType.CONTINUE); } else { // 最后一个选项:选择后直接提交表单 choice.getPageNavigationItem().setGoToPage(FormApp.PageNavigationType.SUBMIT); } choices.push(choice); } // 为题目设置带导航的选项 item.setChoices(choices); } catch (error) { console.error("错误信息: " + error.toString()); } } function getSpreadsheetValues(spreadsheetId, sheetName, column) { var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName); var values = sheet.getRange(column + "1:" + column + sheet.getLastRow()).getValues(); return values.flat().filter(String); // 扁平化数组并移除空值 }
关键修改说明
- 移除了原代码中直接设置选项值的
item.setChoiceValues(columnBValues),改为逐个创建带导航规则的选项 - 通过循环索引判断,为非最后一个选项配置
CONTINUE导航(跳转到下一节),最后一个选项配置SUBMIT导航(提交表单) - 确保表单中已存在对应标题的列表题,且代码拥有访问目标表格和表单的权限
内容的提问来源于stack exchange,提问作者DeJeL
相关产品推荐
相关产品推荐

