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

如何在Google Script Editor中编辑带图片的选项并保留关联图片?

解决Google Form脚本移除选项时保留图片的问题

我之前也碰到过一模一样的情况——直接修改单选按钮选项时,图片总是莫名丢失,后来才发现是没正确保留选项的图片引用。下面分两部分帮你搞定这个问题:

1. 如何访问选项关联的图片

Google Apps Script的Choice对象提供了getImage()方法,能获取选项绑定的图片Blob(二进制数据),你还可以通过Blob的getUrl()方法拿到图片的URL。示例代码如下:

// 获取当前表单和目标单选按钮字段
const form = FormApp.getActiveForm();
// 替换成你的单选字段ID
const multipleChoiceItem = form.getItemById(123456789).asMultipleChoiceItem();

// 获取所有选项并遍历
const allChoices = multipleChoiceItem.getChoices();
allChoices.forEach(choice => {
  const optionText = choice.getValue();
  const optionImage = choice.getImage();
  
  if (optionImage) {
    // 打印图片的URL和名称
    console.log(`选项「${optionText}」的图片URL:${optionImage.getUrl()}`);
    console.log(`图片名称:${optionImage.getName()}`);
  } else {
    console.log(`选项「${optionText}」没有绑定图片`);
  }
});

2. 移除指定选项但保留其他选项的图片

核心思路是:过滤掉要删除的选项后,重新创建包含图片的选项对象,再替换原字段的选项列表。直接修改文本数组会丢失图片引用,必须用createChoice(text, image)方法重新构建带图片的选项。

示例代码(移除指定文本的选项):

const form = FormApp.getActiveForm();
const targetItemId = 123456789; // 替换成你的单选字段ID
const optionToRemove = "需要移除的选项文本"; // 替换成目标选项文本

const multipleChoiceItem = form.getItemById(targetItemId).asMultipleChoiceItem();
const currentChoices = multipleChoiceItem.getChoices();

// 过滤掉要移除的选项
const filteredChoices = currentChoices.filter(choice => choice.getValue() !== optionToRemove);

// 重新构建带图片的选项数组
const updatedChoices = filteredChoices.map(choice => {
  const text = choice.getValue();
  const image = choice.getImage();
  
  if (image) {
    // 如果选项有图片,创建带图片的新选项
    return multipleChoiceItem.createChoice(text, image);
  } else {
    // 无图片则创建普通选项
    return multipleChoiceItem.createChoice(text);
  }
});

// 更新单选字段的选项
multipleChoiceItem.setChoices(updatedChoices);

这样操作后,只有目标选项会被移除,其他带图片的选项会完整保留图片绑定。

内容的提问来源于stack exchange,提问作者Ji Pattison-Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:33:53