You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script配置表单选项跳转:仅最后一项生效问题求助

Google Apps Script表单选项跳转仅保留最后一项的问题解决

使用Google Apps Script编辑Google表单时,需将某道多选题的选项从指定表格读取,并为每个选项配置「根据答案跳转到对应分段」的功能。日志验证所有选项文本和目标分段ID均可正常读取,但最终表单仅保留最后一个选项及对应的跳转设置。

原代码

function editForm() {
    var form          = FormApp.openById('MY FORM ID'); // 要编辑的表单
    var multipleChoiceQstn  = form.getItemById(1288364781).asMultipleChoiceItem();   // 需设置跳转的多选题
    var spreadsheet   = SpreadsheetApp.openById("MY SPREADSHEET ID");
    var sheet         = spreadsheet.getSheetByName("MY SHEET NAME");
    var choices       = sheet.getRange(7,4,17,1).getValues(); // 选项文本所在单元格范围
    var questionsId   = sheet.getRange(7,6,17,1).getValues() ; // 目标分段ID所在单元格范围

    for (var k = 0; k < choices.length; k++) { 
        var choice        = choices[k][0];
        var questionId    = questionsId[k][0];
        var sectionQuest  = form.getItemById(questionId).asPageBreakItem(); 
        multipleChoiceQstn.setChoices([multipleChoiceQstn.createChoice(choice,  sectionQuest)])
    } 
};

问题原因

循环中每次调用setChoices()时,都传入了仅包含当前选项的数组,这会覆盖之前所有已设置的选项,最终只保留循环最后一次创建的选项。

修正方案

先创建一个空数组存储所有带跳转配置的选项对象,循环中逐个添加,最后一次性调用setChoices()完成所有选项的设置。

修正后的代码

function editForm() {
    var form          = FormApp.openById('MY FORM ID'); // 要编辑的表单
    var multipleChoiceQstn  = form.getItemById(1288364781).asMultipleChoiceItem();   // 需设置跳转的多选题
    var spreadsheet   = SpreadsheetApp.openById("MY SPREADSHEET ID");
    var sheet         = spreadsheet.getSheetByName("MY SHEET NAME");
    var choices       = sheet.getRange(7,4,17,1).getValues(); // 选项文本所在单元格范围
    var questionsId   = sheet.getRange(7,6,17,1).getValues() ; // 目标分段ID所在单元格范围

    // 创建空数组存储所有选项
    var allChoices = [];

    for (var k = 0; k < choices.length; k++) { 
        var choice        = choices[k][0];
        var questionId    = questionsId[k][0];
        // 跳过空值(如果表格中有空行)
        if (!choice || !questionId) continue;
        var sectionQuest  = form.getItemById(questionId).asPageBreakItem(); 
        // 将带跳转的选项添加到数组
        allChoices.push(multipleChoiceQstn.createChoice(choice, sectionQuest));
    } 

    // 一次性设置所有选项
    multipleChoiceQstn.setChoices(allChoices);
};

额外优化说明

  • 添加了空值判断,避免表格中空行导致的错误
  • 所有选项统一在循环结束后设置,避免多次覆盖操作

内容的提问来源于stack exchange,提问作者PSAB Plalangan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:22:37