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

如何在Google Apps Script中动态为MultipleChoiceItem添加选项

解决Google Form动态添加带页面跳转的多选题选项问题

核心问题分析

  • setChoices() 是覆盖式赋值,每次调用会替换所有现有选项,因此分批次调用会丢失之前的选项
  • setChoiceValues() 仅支持纯文本选项,无法处理关联页面跳转(PageBreakItem)的选项,这是你循环代码失效的关键原因

正确实现代码

通过循环构建完整的Choice对象数组,再一次性调用setChoices()完成设置:

var preguntaQuienEres = form.addMultipleChoiceItem();
preguntaQuienEres.setTitle('¿Quién eres?').isRequired();

var choices = [];
for (var i = 0; i < nombresAlumnos.length; i++) {
  // 获取对应页面跳转组件
  var targetPage = form.getItemById(saltosDeSeccion[i]).asPageBreakItem();
  // 创建带跳转的选项并加入数组
  choices.push(preguntaQuienEres.createChoice(nombresAlumnos[i], targetPage));
}
// 一次性设置所有选项
preguntaQuienEres.setChoices(choices);

额外技巧:追加选项

如果需要在已有选项基础上新增(而非覆盖),可以先获取当前选项数组,再追加后更新:

// 获取当前已有的选项
var existingChoices = preguntaQuienEres.getChoices();
// 添加新的带跳转选项
existingChoices.push(preguntaQuienEres.createChoice("新增选项", 目标PageBreakItem));
// 更新选项列表
preguntaQuienEres.setChoices(existingChoices);

关于asMultipleChoiceItem()的说明

该方法属于FormApp.Item类,作用是将通用的表单项对象转换为MultipleChoiceItem类型,方便调用多选题专属的方法(如setChoices()),你可以在Google Apps Script官方文档的Item章节找到相关说明。

内容的提问来源于stack exchange,提问作者Alberto Gonzalez Berrio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:30