摆脱单元格着色的无限循环
某个星期一早上,团队的小型数据管理机器人嘟囔着「这东西每次都要手动着色?」
情况是这样的。从Windows设备进入谷歌表格的订单状态数据(「待处理」「处理中」「完成」)需要用颜色区分。虽然用条件格式做了基本设置,但要跟上实时变化的状态值,就得每次手动重新指定范围。
「连这种小东西也能自动化吗?」好奇心开启了这场实验。
与Claude Code的相遇:5分钟的奇迹
打开Claude Code,提出了简单的请求。
「可以建立一个脚本,让谷歌表格的特定列在新增或更新时,根据状态值自动填入背景色吗?」
Claude回传的代码令人惊讶,只有20行左右。
function autoColorStatus() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getRange('A2:F').getValues();
const statusIndex = 2; // 状态列位置
for (let i = 0; i < data.length; i++) {
const status = data[i][statusIndex];
let color = '#ffffff';
if (status === '待处理') color = '#ffe6e6';
if (status === '处理中') color = '#fff4e6';
if (status === '完成') color = '#e6f3ff';
sheet.getRange(i + 2, statusIndex + 1).setBackground(color);
}
}
把这个代码贴到表格的App脚本编辑器,设定触发器为「变更时执行」后,单元格真的开始自动着色了。
实际操作流程
第1步:打开App脚本编辑器
在谷歌表格中点选«工具» → «App脚本»。
第2步:贴入代码
将Claude Code提供的函数复制到编辑器中(列位置、状态值、颜色需根据本身表格调整)。
第3步:设定触发器
在左侧菜单的«触发器»中建立新触发器。
• 函数:«autoColorStatus»
• 部署:«Head»
• 执行对象:«表格»
• 事件:«变更时»
第4步:授权并执行
首次执行时会询问谷歌账户访问权限,允许即可。
惊讶的3件事
第一,速度真的很快。
即使数据超过1,000行,着色也在3秒内完成。条件格式的沉重感瓦解了。
第二,团队成员问起来了。
「昨天这格是灰色的,今天怎么变红色了?」自动变色的景象看起来很新奇。回答「没错,机器人在自己着色」时,团队的表情亮了起来。
第三,扩展非常容易。
后来状态种类增加到5个,只需在代码里多加2行条件就搞定了。
初次尝试时的失误
• 忘记列索引从0开始计算,导致错位一列。
• 不知道颜色值要用16进制格式(#rgb),输入错误后报错。
• 范围设定为«A:F»无限制,结果连空白单元格也被着色。精确的范围指定最关键。
现在能做到的事
将这个模式应用,更多工作能自动化。
• 根据优先级自动调整文字粗度
• 超过期限的项目自动加删除线
• 根据金额范围进行多阶段着色
• 按时间段定期变更背景色
最后的领悟
我们一直在寻找「复杂的自动化」。但最大的时间节省,其实来自这些「重复的小工作」。
当谷歌表格的单元格开始自动着色时,团队正在用那段时间做更重要的事。
这才是自动化的真正意义。