
本文详解如何使用 gspread 库正确设置 google sheets 单元格的垂直对齐方式(如居中),纠正常见误区(如错误传入字典或布尔值),并提供可直接运行的完整代码示例。
本文详解如何使用 gspread 库正确设置 google sheets 单元格的垂直对齐方式(如居中),纠正常见误区(如错误传入字典或布尔值),并提供可直接运行的完整代码示例。
在使用 gspread 操作 Google Sheets 时,许多开发者会尝试沿用 .format() 方法设置文本加粗的逻辑(如 {"textFormat": {"bold": True}})来配置垂直对齐,但垂直对齐(verticalAlignment)并非嵌套在 textFormat 下,也不接受布尔值或对象结构——它是一个顶层字段,且必须传入字符串值(如 "TOP"、"MIDDLE" 或 "BOTTOM")。
错误写法(导致 APIError: Invalid value at '...vertical_alignment', Starting an object on a scalar field):
sheet.format("A1:Z1", {"verticalAlignment": {"MIDDLE": True}}) # ❌ 错误:传入了字典
✅ 正确写法如下(注意:"verticalAlignment": "MIDDLE" 是扁平键值对,值为字符串):
# 设置第一行 A1:Z1 垂直居中对齐
sheet.format("A1:Z1", {"verticalAlignment": "MIDDLE"})
该调用会通过 Google Sheets API 的 repeatCell 请求,将指定范围内所有单元格的 userEnteredFormat.verticalAlignment 字段统一设为 "MIDDLE",从而实现真正的垂直居中(尤其适用于含换行符 \n 的多行表头,避免默认底部对齐造成的视觉失衡)。
? 关键注意事项:
- verticalAlignment 必须作为格式字典的一级键,不可嵌套在 textFormat、backgroundColor 等其他属性下;
- 可选值严格限定为字符串:"TOP"、"MIDDLE"、"BOTTOM"(区分大小写,全大写);
- 若需同时设置多种格式(如加粗 + 居中),应分两次调用 .format()(gspread 目前不支持单次请求合并不同类别的格式字段);
- 范围字符串(如 "A1:Z1")需确保有效;若列数动态变化,建议用 f"A1:{gspread.utils.rowcol_to_a1(1, col_count)}" 动态生成。
完整可运行示例(整合初始化、写入与格式化):
import gspread
from google.oauth2.service_account import Credentials
scopes = ["https://www.googleapis.com/auth/spreadsheets"]
creds = Credentials.from_service_account_file("credentials.json", scopes=scopes)
client = gspread.authorize(creds)
workbook = client.open_by_key("your-sheet-id")
new_worksheet_name = "template"
# 创建或获取工作表
if new_worksheet_name in [ws.title for ws in workbook.worksheets()]:
sheet = workbook.worksheet(new_worksheet_name)
else:
sheet = workbook.add_worksheet(new_worksheet_name, rows=91, cols=30)
# 写入含换行符的表头
values = [["Data\nYYYY/MM/DD", "Totale\ninizio giorno", "Set giornaliero", "Serie\ngiornaliera"]]
sheet.clear()
sheet.update("A1:E1", values) # 注意:此处按实际列数更新,避免写入空列
# 分步应用格式:先加粗,再垂直居中
sheet.format("A1:E1", {"textFormat": {"bold": True}})
sheet.format("A1:E1", {"verticalAlignment": "MIDDLE"}) # ✅ 正确用法
? 提示:若后续还需设置水平对齐、背景色或字体大小等,均遵循相同原则——每个格式类型对应独立的一级键(如 "horizontalAlignment": "CENTER"、"backgroundColor": {"red": 0.9, "green": 0.9, "blue": 0.9}),并通过多次 .format() 调用组合应用。
掌握这一规范,即可稳定、精准地控制 Google Sheets 单元格的排版表现,显著提升自动化报表的专业度与可读性。











