如何在指定列单元格颜色变更时向对应列写入当前日期时间?
功能实现方案
以下是针对Google Sheets的实现步骤,通过绑定Apps Script触发器即可完成需求:
步骤1:打开脚本编辑器
打开目标表格,点击顶部菜单栏「扩展程序」->「Apps 脚本」,进入脚本编辑页面,删除默认生成的空函数代码。
步骤2:粘贴自定义代码
将以下代码粘贴到编辑框中,根据你的实际需求修改开头的三个参数:
// 可修改参数区域 const MONITOR_COLUMN = 1; // 要监测颜色变化的列,A列对应1、B列对应2,以此类推 const TARGET_COLUMN = 2; // 写入日期时间的目标列,规则同上 const ORIGINAL_PURPLE = '#9900ff'; // 替换为你表格中原有紫色的十六进制颜色值 function onColorChange(e) { // 仅响应格式变更事件 if (e.changeType !== 'FORMAT') return; const activeRange = e.source.getActiveRange(); // 仅处理监测列的单元格变更 if (activeRange.getColumn() !== MONITOR_COLUMN) return; const currentColor = activeRange.getBackground(); // 原本为紫色的单元格被改为其他颜色时触发写入 if (currentColor !== ORIGINAL_PURPLE) { const targetRange = activeRange.offset(0, TARGET_COLUMN - MONITOR_COLUMN); // 下方if判断用于避免重复写入,不需要的话可直接删除 if (targetRange.isBlank()) { targetRange.setValue(new Date()); // 自定义时间格式,可根据需求修改 targetRange.setNumberFormat('yyyy-mm-dd hh:mm:ss'); } } }
原有紫色的十六进制值查看方法:选中表格里的紫色单元格,点击顶部填充颜色按钮->「自定义」,即可复制显示的十六进制代码。
步骤3:配置触发规则
- 点击脚本编辑器左侧的「触发器」图标(闹钟形状)
- 点击右下角「添加触发器」按钮
- 选择要运行的函数为
onColorChange - 事件源选择「电子表格」
- 事件类型选择「变更」
- 保存后按照页面提示完成账号授权即可
授权时如果出现「Google未验证此应用」的提示,属于个人开发脚本的正常提示,点击「高级」->「前往[你的脚本项目名]」即可完成授权,脚本仅在你的当前表格内运行,不会对外泄露数据。
注意事项
- 如果需要监测多列的颜色变更,可自行扩展代码的列判断逻辑
- 删除代码中的空值判断后,即可实现每次修改该单元格颜色都更新一次时间
- 该触发器仅响应单元格填充颜色变更的操作,单元格内容修改不会触发时间写入
内容的提问来源于stack exchange,提问作者user16978245
相关产品推荐
相关产品推荐

