Google Sheets API的Pythonic包装器
项目描述
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及其依赖项,特别是httplib2和oauth2client,作为必需的依赖项。
快速入门
使用您想要访问的电子表格的Google帐户登录到Google开发者控制台。创建(或选择)一个项目并启用位于Google Apps APIs下的Drive API和Sheets 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协议)
gspread-pandas – 通过Pandas数据框与Google电子表格交互
pgsheets – 使用Pandas数据框操作Google表格(独立的双向传输库,使用旧版v3 API,仅支持Python 3)
PyDrive – 简化Google Drive API使用(google-api-python-client包装的Google Drive API,目前为v2版本)
许可证
本软件包遵循MIT许可证。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。