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

Google Sheets脚本问题:删除A列数据时无法清除B列日期值

问题与解决方案

需求说明

当A列新增字符串数据时,在对应B列单元格记录日期值;当A列的数据被删除时,同步清除对应B列的日期值。

原脚本问题

原脚本仅能实现A列新增数据时的日期记录,但删除A列数据时无法清除B列对应值,原代码如下:

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();   
    s.getName() == "SheetName";    
  var r = s.getActiveCell();   
    r.getColumn() == 1 ;
  if (r != null) {  
    var check = r.offset(0, 1);
      check.setNumberFormat("MM/dd") ;
      check.setValue(new Date());
     }
  if (r == null) {  
    check.clearContents();
     }
}

修正后的脚本

function onEdit(e) {
  // 仅处理指定工作表和A列的编辑
  const sheet = e.source.getActiveSheet();
  if (sheet.getName() !== "SheetName" || e.range.getColumn() !== 1) return;

  const targetCell = sheet.getRange(e.range.getRow(), 2);
  // 判断A列单元格是否为空
  if (e.value !== "") {
    targetCell.setNumberFormat("MM/dd").setValue(new Date());
  } else {
    targetCell.clearContents();
  }
}

修改说明

  1. 利用事件对象e:通过onEdit自带的事件参数,可以直接获取编辑后单元格的内容e.value,为空则代表数据被删除,这是判断删除操作的核心依据。
  2. 修正流程控制逻辑:原脚本中s.getName() == "SheetName"和r.getColumn() == 1仅做了比较却未控制流程,导致所有工作表的编辑都会触发逻辑。现在添加判断,仅处理指定工作表和A列的操作。
  3. 修复错误判断条件:原脚本中r == null的判断完全无效,因为getActiveCell()永远不会返回null,改为通过e.value是否为空来判断A列内容状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:42:13