用途:在 Cursor 中通过一组 google-sheets 工具创建和编辑 Google 表格,包括数据读写、格式美化、图表、条件格式、结构增删、数据验证、命名区域与保护区域。
坐标系统:值类工具(read_range、write_range、append_rows、clear_range)使用工作表标题加 A1 单元格,如 {sheet: "Data", cells: "A1:B4"};结构与格式类工具(format_cells、set_borders、merge_cells、add_chart、add_conditional_formatting、insert_rows_or_columns、delete_rows_or_columns、freeze_rows_or_columns、sort_range、set_data_validation、set_basic_filter、add_banding、set_column_width、rename_sheet_tab、delete_sheet_tab)使用数字 sheetId。先调用 get_spreadsheet 获取每个标签页的标题与 sheetId 映射(不含单元格数据);新建标签页的 sheetId 在 add_sheet_tab 的 replies[0].addSheet.properties.sheetId 中。
推荐顺序:先写值,再格式化,最后加图表。create_spreadsheet 可带命名标签页,但不能指定文件夹,需之后用 google-drive 的 google_drive_move_or_rename 移动。写入含数字、日期或公式的值时用 parseInput: true,否则默认按纯文本存储,这是图表为空的常见原因。
格式化:表头加粗配填充色与白字,数值列用 $#,##0、0.0% 等数字格式;冻结表头行;对表格区域设 set_basic_filter;用 set_borders 或 add_banding;设列宽避免截断;用 add_conditional_formatting 标注阈值。
图表:add_chart 中第一个区域是域(x 轴或饼图标签),后续区域为系列,每列一个;所有区域须与图表在同一标签页;headerCount: 1 时各区域需包含表头行。图表放在表格旁或下方的空白单元格。图表有误应就地修正:get_spreadsheet 列出各标签页图表(chartId、title),update_chart 替换规格并保留位置,delete_chart 删除,不要新增第二个图表掩盖问题。
命名与保护:add_named_range 让公式更易读(如 =SUM(Budget)),公式需 parseInput: true,名称不能像单元格引用;protect_range 保护表头与公式单元格,warningOnly 默认 true 仅警告,false 则锁定,应在该区域最后一次写入后再保护。get_spreadsheet 会列出两者及删除所需的 id。
限制与陷阱:无版本保护,后写覆盖先写,协作时先读后写;merge_cells 只保留左上角值,应在合并后写文本;sort_range 会改写单元格位置,应在添加引用该区域的公式前排序,并排除表头行;insert/delete_rows_or_columns 位置从 1 开始(A=1),删除立即生效且无法通过 API 撤销;find_replace_sheet 为字面匹配(非正则),可用 searchFormulas: true 搜索公式内部;整表读取可能超出字节上限,未确定大小的标签页应限定单元格范围(如 "1:2000"),截断时按 nextCells 继续。
验证:read_range 用 FORMATTED_VALUE 看用户所见,用 UNFORMATTED_VALUE 确认数字确为数字而非文本;get_spreadsheet 检查结构;视觉结果重要时用 google-drive 的 google_drive_export_file 导出 PDF。