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

Google Sheet脚本需求:区分Date Created与Last Modified列

解决方案:实现Google Sheet首次创建行赋值创建日期,后续编辑仅更新修改日期

修改后的完整代码

function onEdit(e) { 
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() !== "GMQ LISTING") return;

  var actRng = sheet.getActiveRange();
  var editColumn = actRng.getColumn();
  var rowIndex = actRng.getRowIndex();
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
  var dateCol = headers[0].indexOf("Date Created") + 1;
  var dateModifiedCol = headers[0].indexOf("Last Modified") + 1;
  var projectCodeCol = headers[0].indexOf("Project Code (GMQ)  (manual)") + 1;

  // 仅当Project Code列被编辑,且Date Created为空时,赋值创建日期(首次创建行)
  if (dateCol > 0 && rowIndex > 1 && editColumn === projectCodeCol) {
    var dateCell = sheet.getRange(rowIndex, dateCol);
    if (dateCell.getValue() === "") {
      dateCell.setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy HH:mm:ss"));
    }
  }

  // 只要编辑数据行(非表头),就更新Last Modified列
  if (dateModifiedCol > 0 && rowIndex > 1) {
    sheet.getRange(rowIndex, dateModifiedCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy HH:mm:ss"));
  }
}

关键修改说明

  • Date Created列逻辑优化:新增判断dateCell.getValue() === "",确保只有当该单元格为空(首次创建行)时才赋值创建日期,后续编辑Project Code列不会覆盖已有的创建日期
  • Last Modified列逻辑调整:去掉了原代码中仅编辑Project Code列才更新的限制,只要编辑的是表头以外的行,不管修改哪一列都会自动更新修改日期,符合需求
  • 代码精简:移除了重复的判断条件,让逻辑更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:40:17