咨询:Google Sheet中通过脚本实现指定列更新时自动添加时间戳
Google表格自动生成时间戳脚本
分享一个我正在用的Google脚本,能实现当指定列的单元格被更新时,自动在另一列生成格式化的时间戳,适配日常表格需求:
// 获取当前活动工作表名称 function activeSheetName() { return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); } // 编辑触发事件,自动生成时间戳 function onEdit(event) { var timezone = "GMT+9"; // 时区可按需调整,国内用GMT+8即可 var timestamp_format = "MM-dd-yyyy"; // 时间戳格式,支持自定义(如"yyyy-MM-dd HH:mm:ss") var updateColName = "Profit"; // 触发时间戳的目标列名称 var timeStampColName = "Time"; // 写入时间戳的列名称 var sheet = event.source.getSheetByName(activeSheetName()); var actRng = event.source.getActiveRange(); var editColumn = actRng.getColumn(); var index = actRng.getRowIndex(); // 获取表头中目标列和时间戳列的索引 var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); var updateColIndex = headers[0].indexOf(updateColName); var timeStampColIndex = headers[0].indexOf(timeStampColName); // 仅当编辑的是目标列且不是表头行时,生成时间戳 if (updateColIndex !== -1 && timeStampColIndex !== -1 && editColumn === updateColIndex + 1 && index > 1) { var cell = sheet.getRange(index, timeStampColIndex + 1); var currentTime = Utilities.formatDate(new Date(), timezone, timestamp_format); cell.setValue(currentTime); } }
关键细节说明
activeSheetName()函数:专门用来获取当前正在编辑的工作表名称,确保脚本只在你操作的那张表生效,不会影响同文档里的其他工作表onEdit触发器:这是Google表格内置的简单触发器,不需要手动设置,只要用户编辑表格就会自动触发- 参数自定义:
timezone:根据你的所在地区调整,比如国内时区改成"GMT+8"timestamp_format:可以改成你需要的格式,比如要显示时分秒就用"yyyy-MM-dd HH:mm:ss"updateColName和timeStampColName:替换成你表格里实际的列名就行,比如把"Profit"改成"状态","Time"改成"更新时间"
使用步骤
- 打开你的Google表格,点击顶部菜单栏的「扩展程序」→「Apps脚本」
- 把上面的代码粘贴到脚本编辑器里,保存项目(随便起个名字,比如"自动时间戳生成器")
- 返回表格,编辑
updateColName指定的列(比如示例里的"Profit"列),对应的timeStampColName列就会自动填上时间戳啦
内容的提问来源于stack exchange,提问作者AORAION
相关产品推荐
相关产品推荐

