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

使用Apps Script为Google Forms新增选项时如何保留复选框的选项配图

Google Apps Script 复选框追加选项时保留原有配图的实现方案

问题根因

  • Google Forms API 中 CheckboxItem.setChoices() 属于全量覆写接口,调用后会清空目标复选框的所有原有选项配置,仅保留传入列表中通过createChoice显式绑定的属性
  • 原始实现中直接将getChoices()返回的原生Choice对象传入参数列表,这类对象上挂载的关联图片配置不会被API识别,因此最终执行后原有选项的配图会全部丢失

修正实现流程

  1. 遍历目标复选框的所有原有选项,同步提取每个选项的文本值、关联图片资源
  2. 对所有原有选项,调用带图片参数的createChoice方法重建Choice实例,重新绑定原有图片配置
  3. 对需要新增的选项,校验不存在重复文本后,按无图配置生成新的Choice实例
  4. 将所有重建后的Choice实例组成列表,一次性传入setChoices完成配置覆写

核心修正代码

// 获取目标复选框对象
var item = form.getItems(FormApp.ItemType.CHECKBOX)
  .filter(function(item){
    return item.getTitle() === 'Top 5 films';
  })[0].asCheckboxItem();

var finalChoices = [];
var existingChoicesTitles = [];

// 遍历原有选项,重建带图片绑定的Choice对象
var existingChoices = item.getChoices();
existingChoices.forEach(function(choice) {
  var choiceText = choice.getValue();
  var choiceImage = choice.getImage();
  // 重建选项时同步绑定原有图片
  finalChoices.push(item.createChoice(choiceText, choiceImage));
  existingChoicesTitles.push(choiceText);
});

// 追加不存在的新选项
for (i = 0; i < values.length; i++) {
  var newChoiceText = values[i];
  if (!existingChoicesTitles.includes(newChoiceText)) {
    // 新选项无关联图片,图片参数传null即可
    finalChoices.push(item.createChoice(newChoiceText, null));
  }
}

// 写入完整的选项列表
item.setChoices(finalChoices);

注意事项

  • 禁止直接将getChoices()返回的原生Choice对象直接传入setChoices的参数列表,这类原生对象上的扩展配置(关联图片、表单跳转规则)不会被API在覆写操作中自动识别保留
  • 如果原有选项配置了表单跳转逻辑,需要对应使用支持传入跳转参数的createChoice重载方法,在重建Choice时同步绑定原有跳转规则,避免跳转配置丢失

内容的提问来源于stack exchange,提问作者Arthur Martens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 16:24:01