enrich-excel 是一个面向 macOS 的 Excel 数据补全技能,来自 tinyfish-io/tinyfish-cookbook。它的核心用途是:对正在运行的 Excel 工作簿中缺失的数据进行联网研究,并把结果直接写回当前打开的工作表,实现单元格逐个实时填充,无需保存文件或重新加载。
主要能力
- 读取当前活动工作簿的活动工作表内容,解析行号、列号与单元格值。
- 识别表头行、数据行以及其中的空白单元格,确定需要补全的范围。
- 使用 TinyFish 搜索(tinyfish search)研究缺失数据;当搜索摘要不够详细时,可用 tinyfish fetch content 获取完整页面内容。
- 通过 AppleScript 将研究结果写入正在运行的 Excel,逐单元格写入并带有 0.2–0.4 秒延迟,让用户看到填充动画。
- 写入后回读单元格进行验证,并向用户汇总填充的单元格数量与行数。
使用方式
- 预检(必需):依次确认 TinyFish CLI 是否安装(which tinyfish && tinyfish --version)、是否已认证(tinyfish auth status)、Excel 是否已打开工作簿(通过 osascript 获取活动工作簿名称)。任一检查失败则停止并告知用户修复,不得继续。
- 读取活动工作簿:将 AppleScript 写入临时文件(如 /tmp/tf_read_excel.scpt)后执行,不要使用内联 heredoc。默认读取前 50 行、15 列;若超出则提高限制后重跑。输出格式为 row_number>col_num:value|col_num:value|...。
- 识别需补全内容:找到表头行(首个多个单元格非空的行),将列号与表头文本对应,找出数据行中的空白单元格。若用户指定了要填充的列或研究内容,则据此缩小范围。并向用户说明发现的数据行数、表头、缺失数据分布。
- 使用 TinyFish 研究:对每个缺失数据的行,用已有单元格值加目标列标题构造搜索查询,例如 tinyfish search query "Yann LeCun h-index latest paper company affiliation 2025"。输出为 JSON,包含 results 数组,每项有 snippet、title、url。若摘要不足,用 tinyfish fetch content get "URL" 获取完整内容。应先把所有行研究完,再统一写入,避免网络调用与 AppleScript 写入交错。可并行执行多个搜索。
- 写回:用 Python 脚本调用 osascript 逐单元格写入,写入前转义值中的反斜杠与双引号。列映射为 1=A、2=B、3=C……26=Z、27=AA。逐行写入,单元格间延迟 0.2–0.4 秒。
- 验证:回读更新后的单元格,确认写入成功,并向用户汇总,例如“Done! Filled 12 cells across 4 rows. All values verified in the live workbook.”
适用场景
- 在 macOS 上使用 Microsoft Excel for Mac,且工作簿已打开并需要补全缺失字段(如公司、营收、总部、CEO 等)。
- 需要边研究边实时看到单元格被填充的场景。
- 数据量适中、可通过搜索快速查得的数据补全任务。
限制与规则
- 仅支持 macOS,依赖 AppleScript 与 Microsoft Excel for Mac。
- 必须先读取,不得假设工作表内容;不得覆盖已有值,除非用户明确要求覆盖。
- 应使用 tinyfish search 而非 tinyfish agent 或 tinyfish browser;后者慢 10–60 倍,仅当搜索加抓取确实无法获取数据(如登录墙后)时才升级使用。
- AppleScript 必须写入临时文件后执行,不要使用内联 heredoc。
- Excel 在 AppleScript 中对空单元格返回字符串 "missing value",应视为空。
- 若 TinyFish 触发速率限制,等待 60 秒后重试;仍受限则回退到自身知识,并注明哪些值来自训练数据。
- 应向用户展示进度,不要静默执行。
- 写入前必须转义值中的 " 和 \。
- 对于 100 行以上的大表,建议按 10–20 行分批处理并展示进度。
关于收费、价格、平台支持范围等更多信息,资料中暂未提供。