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

如何用Python的pandas读取Google Sheet为Excel格式并进行列搜索?

解决方案:无需gspread/service_account,直接读取Google Sheet为Excel格式操作

可以通过Google Sheets的原生导出API结合pandas实现,完全避开gspread和service_account.json的依赖,操作逻辑和处理本地Excel文件完全一致。

步骤1:生成Google Sheet的XLSX导出链接

  • 打开目标Google Sheet,设置共享权限为「任何人可查看」(私有Sheet的适配见下文)
  • 复制Sheet的原始URL(格式类似 https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit#gid=0)
  • 将URL中的 /edit 替换为 /export?format=xlsx,得到导出链接:https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/export?format=xlsx

步骤2:用pandas读取远程XLSX文件

直接通过请求获取XLSX字节流,用BytesIO模拟本地文件,再用pd.ExcelFile或pd.read_excel处理:

import pandas as pd
import requests
from io import BytesIO

# 替换为你的Google Sheet导出URL
EXPORT_URL = "https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/export?format=xlsx"

# 获取XLSX字节流
resp = requests.get(EXPORT_URL)
resp.raise_for_status()  # 捕获请求错误
xlsx_buffer = BytesIO(resp.content)

# 读取整个Excel文件,可按工作表名称筛选
excel_handler = pd.ExcelFile(xlsx_buffer)
# 查看所有工作表名称
print("可用工作表:", excel_handler.sheet_names)

# 加载目标工作表数据
target_sheet_name = "2024年Q1销售数据"
df = excel_handler.parse(target_sheet_name)

步骤3:按列值检索信息

和处理本地Excel的逻辑完全一致,用pandas的布尔索引筛选:

# 示例:筛选「产品类别」列等于「电子产品」的所有行
filtered_data = df.loc[df["产品类别"] == "电子产品"]

# 也可以多条件组合,比如同时筛选地区和销售额
filtered_data = df.loc[(df["地区"] == "华南") & (df["销售额"] > 10000)]

print(filtered_data)

私有Sheet的适配(无需公开)

如果不想公开Sheet,可以通过OAuth2获取用户级别的访问令牌,在请求头中携带授权信息:

  1. 去Google Cloud Console创建桌面应用类型的OAuth2客户端ID
  2. 通过授权流程获取access_token
  3. 发起请求时添加授权头:
headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
resp = requests.get(EXPORT_URL, headers=headers)

这种方式不需要service_account.json,完全基于用户授权访问私有Sheet。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:35:37