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

Google Sheets时间戳脚本适配多日期工作表及格式优化问询

解决方案

以下是适配需求的Google Apps Script代码,可直接替换原有脚本:

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const sheetNameRegex = /^\d{2}\/\d{2}$/; // 匹配DD/MM格式的工作表名称
  
  // 仅处理符合DD/MM命名规则的工作表
  if (!sheetNameRegex.test(sheet.getName())) return;
  
  const range = e.range;
  const editedCol = range.getColumn();
  const editedRow = range.getRow();
  
  // 仅处理D列(第4列)的编辑,且排除表头行(假设表头在第1行)
  if (editedCol !== 4 || editedRow === 1) return;
  
  const cellValue = range.getValue();
  const timestampCell = sheet.getRange(editedRow, 5); // 对应E列
  
  if (cellValue) {
    // 获取当前时间并格式化为指定样式:HH:MM:SS - DD/MM(带前导零,无年份)
    const timestamp = Utilities.formatDate(
      new Date(),
      Session.getScriptTimeZone(),
      "HH:mm:ss - dd/MM"
    );
    timestampCell.setValue(timestamp); // 写入静态文本,避免自动更新
  } else {
    // 若D列单元格清空,同步清空E列时间戳(可选逻辑,按需保留)
    timestampCell.clearContent();
  }
}

关键处理说明:

  1. 自动适配DD/MM格式工作表

    • 用正则表达式/^\d{2}\/\d{2}$/检测当前工作表名称是否符合DD/MM格式,只要是该命名规则的工作表,脚本都会自动触发处理,无需手动指定工作表名称。
  2. 生成指定格式的静态时间戳

    • 使用Utilities.formatDate生成严格符合要求的时间格式:HH:mm:ss确保时分秒带前导零,dd/MM确保日月带前导零,且不含年份。
    • 通过setValue将格式化后的文本直接写入单元格,生成的是静态文本,不会像内置函数那样在打开文件时自动更新时间戳。

使用步骤:

  1. 打开目标Google表格,点击菜单栏「扩展程序」→「Apps脚本」。
  2. 删除原有脚本内容,粘贴上述代码。
  3. 点击「保存」,命名项目(如「TimestampHandler」)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:50:14