如何为Google Sheets添加最后修改日期?修改B列或勾选复选框时自动记录
解决Google Sheets勾选复选框/修改内容时记录固定修改日期的问题
因为=NOW()是易失性函数,每次打开表格或重新计算都会更新,所以要保留原始修改时间,必须用Google Apps Script写入静态日期值。具体实现步骤如下:
- 打开你的电影清单表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,进入脚本编辑器。
- 删除编辑器里默认的
myFunction()代码,替换成下面的脚本:
function onEdit(e) { const editedCell = e.range; const sheet = editedCell.getSheet(); // 仅处理名为「电影清单」的工作表,可根据你的表名修改 if (sheet.getName() !== "电影清单") return; // 只响应A列(复选框)或B列的编辑操作 const column = editedCell.getColumn(); if (column !== 1 && column !== 2) return; const row = editedCell.getRow(); // 跳过第1行表头(如果没有表头,直接删掉这行代码) if (row === 1) return; // 指定日期写入的列(示例为C列,即第3列,可自行修改) const dateColumn = 3; const currentDate = new Date(); // 将静态日期写入目标单元格,不会随时间自动更新 sheet.getRange(row, dateColumn).setValue(currentDate); }
- 点击编辑器顶部的保存按钮,给脚本起个名字(比如「记录修改时间」)。
- 第一次运行需要授权:点击编辑器顶部的运行按钮,按照提示完成授权(遇到「未经验证的应用」提示时,点击「高级」→「转到XX脚本(不安全)」即可,这是Google对自定义脚本的常规提示,安全可靠)。
自定义说明
- 如果你要把日期写入其他列,比如D列,把
dateColumn = 3改成dateColumn = 4即可; - 如果你的表格没有表头,直接删除
if (row === 1) return;这一行; - 工作表名称要和你实际的表格名称完全一致,否则脚本不会触发。
测试一下:勾选/取消A列的复选框,或者修改B列的内容,指定列就会自动填入当前的日期时间,而且这个值是固定的,后续打开表格不会再更新。
内容的提问来源于stack exchange,提问作者Aldalómë
相关产品推荐
相关产品推荐

