google-sheets
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGoogle Sheets authoring
Google Sheets 制作
Two coordinate systems, on purpose
两套坐标系(有意设计)
- VALUE tools (,
read_range,write_range,append_rows) address a TAB TITLE plus A1 cells:clear_range.{sheet: "Data", cells: "A1:B4"} - STRUCTURE/FORMAT tools (,
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) address the numericdelete_sheet_tab.sheetId
get_spreadsheetadd_sheet_tabreplies[0].addSheet.properties.sheetId- VALUE 工具(、
read_range、write_range、append_rows) 使用“标签页标题 + A1 单元格”定位:clear_range。{sheet: "Data", cells: "A1:B4"} - STRUCTURE/FORMAT 工具(、
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_spreadsheetadd_sheet_tabreplies[0].addSheet.properties.sheetIdSequencing a styled sheet: values first, then format, chart last
样式化表格的步骤:先写数据,再格式化,最后加图表
- (optionally with named tabs; it cannot target a folder - move it after with google-drive
create_spreadsheet).google_drive_move_or_rename - the data with
write_rangewhen values include numbers, dates, or formulas (default false stores everything as literal text - a top source of "chart is empty" bugs).parseInput: true - Format like a real dashboard, not a bare grid:
- bold header with a fill color and white text; number patterns on value columns (
format_cells,$#,##0).0.0% - the header row.
freeze_rows_or_columns - over the table range - filter dropdowns are what make it read as a data table.
set_basic_filter - (outer heavier than inner) or
set_bordersfor alternating row colors;add_bandingso nothing clips.set_column_width - for thresholds worth seeing at a glance.
add_conditional_formatting
- LAST, after the data exists.
add_chart
- (可选创建命名的标签页;它不能指定文件夹——之后用 google-drive 的
create_spreadsheet移动)。google_drive_move_or_rename - 当值包含数字、日期或公式时,用 的
parseInput: true写入数据(默认为 false,会把所有内容存为字面文本——这是“图表为空”类 bug 的头号原因)。write_range - 要像真实仪表板一样格式化,而不是光秃秃的网格:
- 用 加粗表头,设置填充色和白色文字;在数值列上设置数字格式(
format_cells、$#,##0)。0.0% - 用 冻结表头行。
freeze_rows_or_columns - 用 在表格范围上添加筛选——筛选下拉框正是让表格看起来像数据表的关键。
set_basic_filter - 用 (外边框比内边框粗)或
set_borders实现交替行颜色;用add_banding确保内容不被裁切。set_column_width - 用 标出一目了然的关键阈值。
add_conditional_formatting
- 用
- 最后再 ,确保数据已存在。
add_chart
Charts
图表
- In , the FIRST range is the domain (x axis / pie labels) and later ranges are the series, one column each; anchoring a chart to the wrong or reversed ranges is the most common chart bug. All ranges live on the same tab as the chart.
add_chartuses the first cells as series labels - include the header row in each range when you set it.headerCount: 1 - Place the chart over empty cells beside or below the table, not on top of the data it plots.
- A wrong chart is fixed in place, not worked around: lists every tab's charts (chartId, title),
get_spreadsheetreplaces a chart's spec keeping its position,update_chartremoves one. Never add a second chart to paper over a bad first one.delete_chart
- 在 中,第一个范围是类别轴(x 轴 / 饼图标签),后续范围是数据系列,每列一个;将图表锚定到错误或颠倒的范围是最常见的图表 bug。所有范围必须与图表位于同一标签页。
add_chart会把每个范围的第一行单元格用作系列标签——设置时需要把表头行包含在每个范围内。headerCount: 1 - 将图表放在表格旁边或下方的空白单元格区域,不要覆盖它要绘制的数据。
- 错误的图表应当直接就地修复,而不是绕开:会列出每个标签页的图表(chartId、标题),
get_spreadsheet替换图表的 spec 并保持其位置,update_chart删除图表。绝不要添加第二个图表来掩盖第一个坏图表。delete_chart
Named and protected ranges
命名和保护区域
- makes formulas self-documenting (
add_named_rangeinstead of=SUM(Budget)); write the formula with=SUM(B2:B13). Names cannot look like cell references.parseInput: true - guards headers and formula cells (
protect_rangeby default warns editors;warningOnly: truelocks them). Protect AFTER the last write to that range, or your own writes fight the protection.false - lists both, with the ids
get_spreadsheetanddelete_named_rangeneed.unprotect_range
- 让公式具有自文档性(用
add_named_range代替=SUM(Budget));使用=SUM(B2:B13)写入公式。名称不能看起来像单元格引用。parseInput: true - 保护表头和公式单元格(默认
protect_range会提醒编辑者;warningOnly: true则锁定)。必须在最后一次写入该区域之后再进行保护,否则你自己的写入会和保护冲突。false - 会列出两者,以及
get_spreadsheet和delete_named_range所需的 id。unprotect_range
Pitfalls
常见陷阱
- No revision guard anywhere: last write wins. Read before writing when a collaborator may be editing.
- keeps only the top-left value; write the text after merging.
merge_cells - rewrites cell positions; sort before adding formulas that reference the range, and exclude the header row from the sorted range.
sort_range - /
insert_rows_or_columnspositions are 1-based (A=1); deletes are immediate and not undoable through the API.delete_rows_or_columns - is literal (never regex here) and can search inside formulas with
find_replace_sheet.searchFormulas: true - Whole-tab reads can blow the byte cap; bound (e.g. "1:2000") on tabs you have not sized and follow
cellswhen truncated.nextCells
- 任何地方都没有修订保护:最后一次写入生效。当可能有协作者编辑时,写入前先读取。
- 只保留左上角的值;合并后再写入文本。
merge_cells - 会重写单元格位置;在添加引用该范围的公式之前先排序,并且排序列要排除表头行。
sort_range - /
insert_rows_or_columns的位置是基于 1 的(A=1);删除操作是立即生效的,且不能通过 API 撤销。delete_rows_or_columns - 是字面匹配(这里不支持正则),可以用
find_replace_sheet搜索公式内部。searchFormulas: true - 整页读取可能超出字节上限;对尚未确定大小的标签页,请限定 (如 "1:2000"),并在结果被截断时跟进
cells。nextCells
Verify your work
验证你的工作
read_rangeget_spreadsheetgoogle_drive_export_file用 读取值(FORMATTED_VALUE 显示用户看到的内容;UNFORMATTED_VALUE 是原始数字——用它来确认数字确实是数字,而不是文本)。用 检查结构:标签页、图表、命名区域、保护。当视觉效果很重要时,用 google-drive 的 (PDF 会渲染包括图表和格式在内的所有标签页)。
read_rangeget_spreadsheetgoogle_drive_export_file