如何将Google Spreadsheet API生成的图表保存至Google Drive
如何将Google Sheets API生成的图表保存至Google Drive
Google Sheets API本身没有直接导出图表到Drive的端点,需要结合Google Drive API两步完成:先导出图表的二进制内容,再将其作为新文件上传到Drive。
步骤分解
1. 获取图表的导出内容
首先通过Sheets API的spreadsheets.get接口拿到目标图表的chartId,然后构造导出URL:
https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/chartrender?cid={CHART_ID}
发起GET请求时带上有效的OAuth2凭证(确保有权限访问该表格),就能拿到图表的二进制数据(默认是PNG格式,可通过&format=pdf参数切换为PDF)。
2. 上传到Google Drive
调用Drive API的files.create接口,把获取到的二进制数据上传为Drive文件:
- 配置文件元数据:指定文件名、MIME类型(PNG对应
image/png,PDF对应application/pdf),可选设置父文件夹ID来指定存储位置 - 将图表二进制数据作为请求体上传
示例Python代码:
import requests from google.oauth2.credentials import Credentials # 替换为你的实际参数 creds = Credentials.from_authorized_user_file('token.json') spreadsheet_id = "YOUR_SPREADSHEET_ID" chart_id = "YOUR_CHART_ID" target_folder_id = "YOUR_FOLDER_ID" # 可选,留空则存到Drive根目录 # 拉取图表数据 chart_export_url = f"https://docs.google.com/spreadsheets/d/{spreadsheet_id}/chartrender?cid={chart_id}" chart_response = requests.get(chart_export_url, headers={"Authorization": f"Bearer {creds.token}"}) chart_data = chart_response.content # 上传到Drive drive_upload_url = "https://www.googleapis.com/drive/v3/files" file_metadata = { "name": "MyExportedChart.png", "mimeType": "image/png", "parents": [target_folder_id] if target_folder_id else [] } # 构造多部分请求 request_body = { "data": ("metadata", str(file_metadata), "application/json"), "file": chart_data } upload_response = requests.post( drive_upload_url, headers={"Authorization": f"Bearer {creds.token}"}, files=request_body ) # 输出上传后的文件ID print("Uploaded file ID:", upload_response.json().get("id"))
关键注意事项
- 授权范围必须包含:
https://www.googleapis.com/auth/spreadsheets.readonly(读取表格图表)和https://www.googleapis.com/auth/drive.file(上传文件到Drive) - 如果需要导出其他格式,调整URL的
format参数和对应的MIME类型即可 - 确保你的凭证账号有权限访问目标表格和指定的Drive文件夹
内容的提问来源于stack exchange,提问作者tadamw
相关产品推荐
相关产品推荐

