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

如何让Google Sheets的onEdit函数仅在指定列满足条件时执行?

修改onEdit函数实现条件触发数字清理

可以通过以下修改后的onEdit函数实现需求,核心是利用事件对象精准定位编辑单元格,再判断对应B列的内容是否符合条件后执行清理操作:

function onEdit(e) {
  // 获取事件相关的单元格与工作表对象
  const editedRange = e.range;
  const sheet = editedRange.getSheet();
  
  // 仅处理D列(列索引为4)且行号≥2的单元格编辑
  if (editedRange.getColumn() !== 4 || editedRange.getRow() < 2) return;
  
  // 获取对应行的B列单元格内容
  const bColumnValue = sheet.getRange(editedRange.getRow(), 2).getValue().trim();
  
  // 判断B列内容是否符合"após x horas"格式(可根据实际需求调整正则)
  const isHourCondition = /^após \d+ horas$/.test(bColumnValue);
  
  // 符合条件则清理当前D列单元格的非数字字符
  if (isHourCondition) {
    const originalValue = editedRange.getValue().toString();
    const numericOnly = originalValue.replace(/[^0-9]/g, '');
    editedRange.setValue(numericOnly);
  }
}

关键说明:

  • 事件对象e的使用:避免了原代码中全列扫描的低效操作,只针对用户编辑的单元格处理,性能更优。
  • 条件判断逻辑:
    • 先过滤非D列或行号小于2的编辑操作,直接返回不处理。
    • 通过正则/^após \d+ horas$/匹配B列是否为"após x horas"格式(x为数字),如果需要更宽松的匹配(比如内容包含"horas"即可),可以改为/horas/.test(bColumnValue)。
  • 数字清理:将当前编辑单元格的内容转为字符串后,用正则替换掉所有非数字字符,再写回单元格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:01:08