Python无需API读取Google Sheets表格的实现问题
无需API读取Google Sheets的解决方案
要无token仅通过URL读取Google Sheets,核心是利用Google Sheets的公开导出功能,前提是你的表格已经设置为任何人可查看的公开权限。
步骤1:构造导出CSV的URL
把普通的Google Sheets编辑URL,替换成CSV导出格式的URL:
- 原编辑URL格式:
https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit#gid=[SHEET_GID] - 导出CSV的URL格式:
https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/export?format=csv&gid=[SHEET_GID]
其中:
SPREADSHEET_ID:是编辑URL中d/与/edit之间的字符串,比如https://docs.google.com/spreadsheets/d/abc123xyz/edit里的abc123xyzSHEET_GID:是URL中gid=后面的数字,每个工作表对应唯一GID,默认第一个工作表的GID是0
步骤2:Python读取示例
用基础库(requests+csv)读取
import requests import csv from io import StringIO # 替换为你的表格ID和工作表GID spreadsheet_id = "你的表格ID" sheet_gid = "0" # 构造导出URL export_url = f"https://docs.google.com/spreadsheets/d/{spreadsheet_id}/export?format=csv&gid={sheet_gid}" # 请求获取CSV内容 resp = requests.get(export_url) resp.encoding = "utf-8" # 避免中文乱码 # 将文本转为可读取的文件流 csv_stream = StringIO(resp.text) # 读取并打印每行内容 csv_reader = csv.reader(csv_stream) for row in csv_reader: print(row)
用pandas快速读取(更适合数据分析)
import pandas as pd spreadsheet_id = "你的表格ID" sheet_gid = "0" export_url = f"https://docs.google.com/spreadsheets/d/{spreadsheet_id}/export?format=csv&gid={sheet_gid}" # 直接读取为DataFrame df = pd.read_csv(export_url) # 打印前5行数据 print(df.head())
注意事项
- 必须确保表格权限设置为「任何人拥有查看权限」,否则请求会返回登录页面的HTML(就是你之前遇到的情况)
- 除了CSV格式,还可以替换
format=参数为xlsx导出Excel文件,用pd.read_excel()读取 - 如果表格有复杂格式(比如合并单元格),导出的CSV会按拆分后的单元格内容展示
内容的提问来源于stack exchange,提问作者Irina
相关产品推荐
相关产品推荐

