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
相关产品推荐
相关产品推荐

