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

咨询: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"改成"更新时间"

使用步骤

  1. 打开你的Google表格,点击顶部菜单栏的「扩展程序」→「Apps脚本」
  2. 把上面的代码粘贴到脚本编辑器里,保存项目(随便起个名字,比如"自动时间戳生成器")
  3. 返回表格,编辑updateColName指定的列(比如示例里的"Profit"列),对应的timeStampColName列就会自动填上时间戳啦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:23