You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Google Sheet API在PHP中修改字体族和字号

使用Google Sheets API修改字体族与字号的实操指南

Hey there! 看你说搜了半天谷歌来求助,刚好我之前研究过用Google Sheets API修改字体的操作,给你详细捋一捋~

先做好准备工作

在开始写代码之前,得先搞定这几件事:

  • 去Google Cloud Console启用Google Sheets API,然后创建一个服务账号,下载对应的密钥JSON文件
  • 安装Google的Python客户端库,终端里跑这个命令:pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
  • 记得把服务账号的邮箱添加到你的谷歌表格共享列表里,给它编辑权限,不然API没权限修改表格

场景1:修改指定单元格/范围的字体

如果只想给某一块单元格改字体,用batchUpdate里的repeatCell操作最方便,能批量应用格式。下面是完整的Python代码示例:

from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials

# 加载服务账号密钥
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
SERVICE_ACCOUNT_FILE = '你的服务账号密钥.json'  # 替换成你的密钥文件名

creds = Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)

# 构建Sheets服务对象
service = build('sheets', 'v4', credentials=creds)

# 替换成你的表格ID和目标范围
SPREADSHEET_ID = '你的谷歌表格ID'
TARGET_SHEET_ID = 0  # 第一个工作表默认是0,不确定的话可以用API查

# 构建格式更新请求
requests = [
    {
        "repeatCell": {
            "range": {
                "sheetId": TARGET_SHEET_ID,
                "startRowIndex": 0,    # 起始行(从0开始计数)
                "endRowIndex": 5,      # 结束行(不包含,这里就是第0到4行)
                "startColumnIndex": 0, # 起始列
                "endColumnIndex": 3    # 结束列
            },
            "cell": {
                "userEnteredFormat": {
                    "textFormat": {
                        "fontFamily": "Arial",  # 替换成你要的字体,比如"Times New Roman"
                        "fontSize": 14          # 字号,单位是pt
                    }
                }
            },
            "fields": "userEnteredFormat.textFormat"  # 只更新字体相关字段,避免覆盖其他格式
        }
    }
]

# 发送更新请求
body = {'requests': requests}
response = service.spreadsheets().batchUpdate(
    spreadsheetId=SPREADSHEET_ID, body=body).execute()

print(f"搞定啦!一共更新了{response['totalUpdatedCells']}个单元格")

小提示:怎么找工作表ID?

如果不知道目标工作表的ID,可以用下面的代码获取所有工作表信息:

sheet_metadata = service.spreadsheets().get(spreadsheetId=SPREADSHEET_ID).execute()
sheets = sheet_metadata.get('sheets', '')
for sheet in sheets:
    print(f"工作表名称:{sheet['properties']['title']},ID:{sheet['properties']['sheetId']}")

场景2:设置整个工作表的默认字体

如果想让新添加的单元格自动用指定字体,就修改工作表的默认格式:

requests = [
    {
        "updateSheetProperties": {
            "properties": {
                "sheetId": TARGET_SHEET_ID,
                "defaultFormat": {
                    "textFormat": {
                        "fontFamily": "Calibri",
                        "fontSize": 12
                    }
                }
            },
            "fields": "defaultFormat.textFormat"
        }
    }
]

body = {'requests': requests}
response = service.spreadsheets().batchUpdate(
    spreadsheetId=SPREADSHEET_ID, body=body).execute()

print("工作表默认字体已经更新完成!")

几个要注意的点

  • 字体尽量用Google Sheets内置的那些,比如Arial、Calibri、Times New Roman这些,自定义字体可能不支持
  • 如果要给不同单元格设置不同字体,可以拆分多个repeatCell请求,或者用updateCells逐个设置(不过批量操作更高效)
  • 权限一定要搞对!如果API返回权限错误,先检查服务账号邮箱有没有被添加到表格共享里,是不是编辑权限

如果还有细节搞不定,比如处理多工作表、复杂范围的格式,随时提出来就行~

内容的提问来源于stack exchange,提问作者bhaveshkac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:05:04