求Google Sheets生成含时间戳用户名的编辑审计日志脚本
Google Sheets 编辑审计日志脚本实现方案
前置准备
- 打开你需要添加审计功能的目标Google Sheets表格
- 新建一个名为
审计日志的工作表,在第一行依次填入表头:编辑时间、操作用户、编辑位置、修改前值、修改后值,表头可以根据你的需求调整
操作步骤
- 点击表格顶部菜单栏的「扩展程序」→「Apps 脚本」,打开脚本编辑器,清空编辑器内默认的所有代码
- 粘贴如下代码到编辑器中:
// 编辑事件自动触发函数,无需手动运行 function onEdit(e) { // 配置项:如果你的审计日志工作表改了名字,这里同步修改引号内的名称即可 const LOG_SHEET_NAME = '审计日志'; const editRange = e.range; const editSheet = editRange.getSheet(); // 在审计日志工作表内的操作不记录,避免循环触发 if (editSheet.getName() === LOG_SHEET_NAME) return; const logSheet = e.source.getSheetByName(LOG_SHEET_NAME); if (!logSheet) return; // 收集审计所需信息 const editTime = new Date(); const operateUser = e.user ? e.user.getEmail() : '匿名用户'; const editCell = `${editSheet.getName()}!${editRange.getA1Notation()}`; const beforeValue = e.oldValue || '空值/批量编辑'; const afterValue = e.value || '空值/批量编辑'; // 写入日志到最后一行 logSheet.appendRow([editTime, operateUser, editCell, beforeValue, afterValue]); // 自动格式化时间戳,不需要可以删除下一行 logSheet.getRange(logSheet.getLastRow(), 1).setNumberFormat('yyyy-mm-dd hh:mm:ss'); }
- 点击编辑器顶部的保存按钮,自定义项目名称(比如「表格审计工具」)即可
- 首次使用需要完成授权:点击编辑器顶部的运行按钮,选择
onEdit函数,按照页面提示完成授权即可。如果遇到「Google未验证应用」的提示,点击「高级」→「转到[你的项目名](不安全)」即可继续授权,脚本为你自己编写,不存在安全风险
功能说明
- 所有非审计日志工作表的编辑操作都会自动触发日志记录,不需要手动运行任何功能
- 完全覆盖你需要的三类审计信息:
- 精确到秒的编辑时间戳,自动适配你表格的时区
- 操作人的Google账号邮箱,匿名编辑的用户会显示为「匿名用户」
- 被编辑单元格的位置、修改前后的数值,信息更完整便于追溯
- 无需额外设置触发器,
onEdit是Google Sheets内置的简单触发器,授权完成后自动生效
注意事项
- 批量粘贴、删除大范围单元格的操作仅会记录首个单元格的修改内容,这是Google Sheets官方接口的限制
- 如果不需要记录编辑位置和修改前值,可以删除代码中对应行里的相关参数即可
内容的提问来源于stack exchange,提问作者Tomasco
相关产品推荐
相关产品推荐

