如何使用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
相关产品推荐
相关产品推荐

