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

求Google Sheets脚本:新增值时自动更新下拉列表的永久数据范围

Google Sheets 脚本:自动添加新值到下拉数据源并永久保留

以下是满足需求的脚本,当你在Sheet1的B2及以下单元格输入内容时,会自动检查'Data Sheet'的C列是否已存在该值,不存在则追加到数据源末尾,实现永久保留:

function onEdit(e) {
  // 获取当前编辑的单元格和值
  const editedCell = e.range;
  const sheet = editedCell.getSheet();
  const inputValue = editedCell.getValue().trim();
  
  // 判断是否是Sheet1的B列且行号≥2,同时输入值不为空
  if (sheet.getName() !== 'Sheet1' || editedCell.getColumn() !== 2 || editedCell.getRow() < 2 || inputValue === '') {
    return;
  }
  
  // 获取数据源所在的工作表和C列数据
  const dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data Sheet');
  const dataRange = dataSheet.getRange('C2:C' + dataSheet.getLastRow());
  const dataValues = dataRange.getValues().flat(); // 把二维数组转成一维数组
  
  // 检查输入值是否已存在于数据源中
  if (!dataValues.includes(inputValue)) {
    // 追加到数据源的最后一行
    dataSheet.appendRow(['', '', inputValue]); // 前两空列对应A、B,第三列是C
  }
}

安装和使用步骤:

  1. 打开你的Google表格,点击顶部菜单栏的扩展 > Apps 脚本
  2. 清空编辑器里的默认代码,粘贴上面的脚本
  3. 点击左上角的保存按钮,给项目起个名字(比如"AutoAddToDataSource")
  4. 关闭脚本编辑器,回到表格测试:在Sheet1的B列输入一个数据源里没有的值,切换到'Data Sheet'就能看到新值已经被添加到C列末尾

关键说明:

  • 脚本用onEdit简单触发器,不需要额外授权,只要你是表格所有者就能直接用
  • trim()会去掉输入值前后的空格,避免因为空格导致的重复判断错误
  • appendRow(['', '', inputValue])是因为要追加到C列,所以前两个元素为空对应A、B列,第三个元素是要添加的值
  • 如果你修改了工作表名称(比如Sheet1改成"表单",Data Sheet改成"数据源"),要同步修改脚本里的sheet.getName() !== 'Sheet1'和getSheetByName('Data Sheet')这两处的名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:03:08