You need to enable JavaScript to run this app. 如何让Google Sheets的onEdit脚本仅在指定工作表运行且避免时间戳覆盖
优惠活动
大模型
产品
解决方案
定价
更多

如何让Google Sheets的onEdit脚本仅在指定工作表运行且避免时间戳覆盖

修改后完整代码
function onEdit(e) {
  // 配置项:填入需要脚本生效的工作表名称,可按需增删
  const allowedSheets = ["工作表1", "工作表2"];
  // 配置监听列、对应时间戳写入的偏移量
  const colsToWatch = [3, 6];
  const offset = [-1, -1];

  // 校验工作表权限:不在允许列表内直接终止运行
  const currentSheet = e.range.getSheet();
  if (allowedSheets.indexOf(currentSheet.getSheetName()) === -1) return;

  // 校验编辑位置:非监听列、表头行编辑直接终止运行
  const ind = colsToWatch.indexOf(e.range.columnStart);
  if (ind === -1 || e.range.rowStart === 1) return;

  // 仅目标单元格为空时写入时间戳,避免覆盖已有记录
  const targetCell = e.range.offset(0, offset[ind]);
  if (targetCell.isBlank()) {
    targetCell.setValue(!e.value ? null : Utilities.formatDate(new Date(), "GMT+1", "dd MMM yyyy     HH:mm.ss"));
  }
}
改动说明
  • 新增工作表运行限制:修改allowedSheets数组内容,填入你需要脚本生效的工作表名称即可,新增的未录入工作表不会触发该脚本逻辑
  • 新增时间戳防覆盖逻辑:写入前会校验目标时间戳单元格是否为空,仅空单元格会写入新时间戳,已生成的时间戳不会被后续编辑操作覆盖
  • 可按需调整配置:如果不需要在编辑单元格清空时同步删除时间戳,可删除!e.value ? null : 部分,直接保留Utilities.formatDate(...)写入逻辑即可,时区、时间格式也可按需求修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:03:01