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

如何在状态列切换至指定状态时自动生成Timestamp至对应列?

解决方案

实现逻辑

通过Google Apps脚本的onEdit触发器监听Status列(第6列)的编辑事件:

  • 当单元格值变为In-Progress时,给同行的Time Started列(第7列)填充当前时间(默认仅第一次切换时填充,避免重复覆盖)
  • 当单元格值变为completed时,给同行的Time Completed列(第8列)填充当前时间(同样默认仅第一次切换时填充)

具体脚本代码

function onEdit(e) {
  const editedRange = e.range;
  const editedSheet = editedRange.getSheet();
  const editedCol = editedRange.getColumn();
  const editedRow = editedRange.getRow();
  const newStatus = e.value;

  // 仅处理第6列的编辑,且跳过表头行(假设表头在第1行)
  if (editedCol !== 6 || editedRow === 1) return;

  const currentTime = new Date();

  switch(newStatus) {
    case "In-Progress":
      const timeStartedCell = editedSheet.getRange(editedRow, 7);
      // 仅当单元格为空时填充时间
      if (timeStartedCell.getValue() === "") {
        timeStartedCell.setValue(currentTime);
        // 自定义时间格式,可按需修改
        timeStartedCell.setNumberFormat("yyyy-MM-dd HH:mm:ss");
      }
      break;
    case "completed":
      const timeCompletedCell = editedSheet.getRange(editedRow, 8);
      // 仅当单元格为空时填充时间
      if (timeCompletedCell.getValue() === "") {
        timeCompletedCell.setValue(currentTime);
        timeCompletedCell.setNumberFormat("yyyy-MM-dd HH:mm:ss");
      }
      break;
    default:
      break;
  }
}

使用步骤

  1. 打开目标Google表格,点击顶部菜单栏的扩展程序 > Apps 脚本
  2. 清空编辑器默认代码,粘贴上述脚本
  3. 点击编辑器右上角保存按钮,给项目命名(比如「任务状态时间自动填充」)
  4. 返回表格测试:切换Status列的状态,对应时间列会自动填充当前时间

可选调整

  • 如果需要每次切换状态都更新时间(而非仅第一次),删除代码中判断单元格为空的if语句即可
  • 若表头不在第1行,修改editedRow === 1中的数字匹配实际表头行
  • 时间格式可通过修改setNumberFormat的参数调整,比如改为"MM/dd/yyyy hh:mm AM/PM"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:43:29