跳转到主要内容

Google Sheets API的Pythonic包装器

项目描述

Latest PyPI Version License Supported Python Versions Wheel format

Build Codecov Readthedocs stable Readthedocs latest

gsheets 是围绕 Google Sheets API (v4) 的小型包装器,以提供从Python脚本更方便地访问 Google Sheets 的方法。

开启API,下载OAuth客户端ID的JSON文件,并从中创建一个Sheets对象。使用其索引访问(__getitem__)通过id检索SpreadSheet对象,或者使用带有sheet URL的.get()方法。遍历所有电子表格的Sheets对象,或者使用.find().findall()方法通过标题获取电子表格。

SpreadSheet对象是WorkSheets的集合,提供通过电子表格坐标/切片(例如ws['A1'])和零基单元格位置(例如ws.at(0, 1))访问单元格值的接口。

使用.to_csv()方法将WorkSheets(或从SpreadSheet中的所有内容)保存为CSV文件。使用.to_frame()方法从工作表创建pandas.DataFrames

安装

此软件包在Python 3.7+下运行,使用pip进行安装

$ pip install gsheets

这还将安装google-api-python-client及其依赖项,特别是httplib2oauth2client,作为必需的依赖项。

快速入门

使用您想要访问的电子表格的Google帐户登录到Google开发者控制台。创建(或选择)一个项目并启用位于Google Apps APIs下的Drive APISheets API

转到您的项目的凭据,并创建新建凭据 > OAuth客户端ID > 类型为其他。在您的OAuth 2.0客户端ID列表中,点击您刚创建的客户端ID的下载JSON。将文件保存为client_secrets.json到您的家目录(用户目录)。成功授权后,将创建另一个名为storage.json的文件,用于缓存OAuth数据。

在您第一次使用包含此文件(包含客户端密钥)的gsheets时,您的网页浏览器将打开,要求您使用Google帐户登录以授权此客户端读取其所有Google Drive文件和Google Sheets的权限。

创建sheets对象

>>> from gsheets import Sheets

>>> sheets = Sheets.from_files('~/client_secrets.json', '~/storage.json')
>>> sheets  #doctest: +ELLIPSIS
<gsheets.api.Sheets object at 0x...>

通过id或url获取电子表格

# id only
>>> sheets['1dR13B3Wi_KJGUJQ0BZa2frLAVxhZnbz0hpwCcWSvb20']
<SpreadSheet 1dR13...20 'Spam'>

# id or url
>>> url = 'https://docs.google.com/spreadsheets/d/1dR13B3Wi_KJGUJQ0BZa2frLAVxhZnbz0hpwCcWSvb20'
>>> s = sheets.get(url)
>>> s
<SpreadSheet 1dR13...20 'Spam'>

访问工作表及其值

# first worksheet with title
>>> s.find('Tabellenblatt2')
<WorkSheet 1747240182 'Tabellenblatt2' (10x2)>

# worksheet by position, cell value by index
>>> s.sheets[0]['A1']
'spam'

# worksheet by id, cell value by position
>>> s[1747240182].at(row=1, col=1)
1

将工作表导出到CSV文件

>>> s.sheets[1].to_csv('Spam.csv', encoding='utf-8', dialect='excel')

将所有工作表导出到CSV文件(文件名从电子表格和工作表标题派生而来)

>>> csv_name = lambda infos: '%(title)s - %(sheet)s.csv' % infos
>>> s.to_csv(make_filename=csv_name)

将工作表数据加载到pandas DataFrame中(需要pandas

>>> s.find('Tabellenblatt2').to_frame(index_col='spam')
      eggs
spam
spam  eggs
...

WorkSheet.to_frame()将它的kwargs传递给pandas.read_csv()

另请参阅

  • gsheets.py – 将Google电子表格中所有工作表导出到CSV或转换任何子表到pandas DataFrame的独立脚本(此库Python 2原型)

  • gspread – Google电子表格Python API(更成熟且功能更强大的Python包装器,目前使用基于XML的旧版v3 API

  • 使用gspread将工作表获取到pandas DataFrame中的示例Jupyter笔记本

  • df2gspread – 在Google电子表格和Pandas之间传输数据(基于gspread,目前仅支持Python 2,GPL协议)

  • pygsheets – Google电子表格Python API v4(gspread的v4版本,提供更多扩展功能)

  • gspread-pandas – 通过Pandas数据框与Google电子表格交互

  • pgsheets – 使用Pandas数据框操作Google表格(独立的双向传输库,使用旧版v3 API,仅支持Python 3)

  • PyDrive – 简化Google Drive API使用(google-api-python-client包装的Google Drive API,目前为v2版本)

许可证

本软件包遵循MIT许可证

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

gsheets-0.6.1.zip (38.1 kB 查看哈希值)

上传时间 源代码

构建版本

gsheets-0.6.1-py3-none-any.whl (19.0 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面