问题发现:看得见的数据与读得到的数据的差异
昨天早上,运行在 Windows 设备上的 Claude Code 自动化发送了奇怪的信号。Google 表格中明确有 300 个订单项目输入,但机器人读到的数据只有 287 个。
「怪了。13 个跑到哪里去了?」
梦想团队(小仓鼠们和小狗们)追踪后发现,它们都有相同的特征:单元格内套用了背景色或特殊格式。
原因:Google Sheets API 的透明墙
当 Claude Code 通过 Google Sheets API 读取数据时,基本上只提取「值」。颜色、字体样式、条件格式等视觉信息需要额外的 API 调用,但我们初期设定中没有考虑到这一点。
特别重要的是,当我们手动输入时,即使有颜色也不成问题,但对自动化机器人而言,这种颜色承载着「数据已验证」或「优先级高」等含义。
解决方案 1:用辅助列替代条件格式
最简单的方法是将格式信息制作成另一列。
| 订单编号 | 商品名 | 配送状态 | 优先级(文字) |
|---------|--------|---------|------------------|
| 001 | 衬衫 | 确认 | HIGH |
| 002 | 裤子 | 等待 | LOW |
用「HIGH」、「LOW」之类的文字值存储信息,而不是颜色,Claude Code 就能无误地读取。
解决方案 2:Google Sheets API 进阶设定
在 Claude Code 中连接 Google Sheets 时,可做如下调整:
const sheet = await sheets.spreadsheets.values.get({
spreadsheetId: SHEET_ID,
range: 'A1:Z1000',
valueRenderOption: 'FORMATTED_VALUE' // 应用格式后的值
});
用「FORMATTED_VALUE」代替默认的「UNFORMATTED_VALUE」,即可包含隐藏单元格或条件格式的结果值。
我们的选择:混合方法
最终我们选择的方式是两者结合。
1. 重要筛选条件(优先级、状态)用单独的文字列管理
2. 视觉颜色仅保留供团队参考用,与自动化无关
3. Claude Code 只参照文字列
这样既没有数据遗失,团队也能快速视觉化理解信息。
学到的:自动化设计初期的小决定很重要
以非开发者的立场,这次问题带来了不少启发。我们自然地认为「用颜色表达信息」,但实际上对机器人而言是完全不同的信号。
现在每当制作新自动化时,我们都会问:「这条信息是否只以颜色或格式存在?」
如果你的自动化也遇到类似问题,先从数据设计阶段开始,把格式信息明确分离。那个小小的整理能防止几天后的大混乱。