到google sheets api的pythonic接口,实际上在2019年7月就可以工作了。
EZSheets的Python项目详细描述
电子表格
到google sheets api的pythonic接口,实际上在2019年6月就可以工作了。
安装
要使用pip安装,请运行:
pip install ezsheets
快速入门指南
首先,转到https://developers.google.com/sheets/api/quickstart/python并单击“启用google sheets api”按钮。你需要登录你的谷歌账户。(我建议使用专门为python脚本创建的单独google帐户。)然后下载credentials.json文件,将其重命名为credentials-sheets.json,并将其与python脚本放在同一文件夹中。
接下来,使用pip
(或pip3
在MacOS和Linux上为Python3安装以下模块):
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
接下来安装ezsheets模块:
pip install --upgrade ezsheets
第一次调用ezsheets函数时,模块将使用credentials-sheets.json文件生成token-sheets.pickle和token-drive.pickle文件。不要共享这些文件:对待这些文件就像对待你的谷歌帐户密码一样。
使用电子表格的url:
创建Spreadsheet
对象
>>> import ezsheets
>>> s = ezsheets.Spreadsheet('https://docs.google.com/spreadsheets/d/16RWH9XBBwd8pRYZDSo9EontzdVPqxdGnwM5MnP6T48c/edit#gid=0')
您也可以只提供url的电子表格id部分:
>>> s = ezsheets.Spreadsheet('16RWH9XBBwd8pRYZDSo9EontzdVPqxdGnwM5MnP6T48c')
Spreadsheet
对象有一个title
和spreadsheetId
属性:
>>> s.title
'Class Data Example'
>>> s.title = 'Class Data'
>>> s.title
'Class Data'
>>> s.spreadsheetId
'16RWH9XBBwd8pRYZDSo9EontzdVPqxdGnwM5MnP6T48c'
Spreadsheet
对象还有一个sheets
属性,它是Sheet
对象的列表:
>>> s.sheets
(Sheet(title='Sheet3', sheetId=314007586, rowCount=1000, columnCount=26), Sheet(title='Foobar', sheetId=2075929783, rowCount=1000, columnCount=27), Sheet(title='Class Data', sheetId=0, rowCount=101, columnCount=22, frozenRowCount=1), Sheet(title='Sheet2', sheetId=880141843, rowCount=1000, columnCount=26))
>>> s.sheetTitles
('Sheet3', 'Foobar', 'Class Data', 'Sheet2')
>>> sh = s.sheets[0]
然后,您可以查看工作表的大小和标题:
>>> sh = s.sheets[0]
>>> sh.title
'Sheet3'
>>> sh.title = 'My New Title'
>>> sh.title
'My New Title'
>>> sh.columnCount, sh.rowCount
(26, 1000)
您还可以获取或更新特定单元格、行或列中的数据:
>>> sh.get(1,1)
'fads'
>>> sh.update(1, 1, 'New cell value')
>>> sh.getRow(1)
['New cell value', 'fe', 'fa', 'ewafwe', 'f', 'ew', 'ewafawef', 'ewf', 'ewf', 'ew', 'fewa', 'f', 'ew', '', '', '', '', '', '', 'ewf', 'ewafewaf', 'ewfewf', '', 'f', 'ewfewafewaf', 'ewfew']
>>> sh.updateRow(['cell A', 'cell B', 'cell C'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: updateRow() missing 1 required positional argument: 'values'
>>> sh.updateRow(1, ['cell A', 'cell B', 'cell C'])
>>> sh.getColumn(1)
['cell A']
>>> sh.update(1, 2, 'another value')
>>> sh.getColumn(1)
['cell A', 'another value']
>>> sh.updateAll([['CELL A', 'ANOTHER VALUE', 'CELL C'], ['ANOTHER VALUE']])
>>> sh.getAll()
[['CELL A', 'ANOTHER VALUE', 'CELL C'], ['ANOTHER VALUE']]
如果google工作表上的数据发生更改,您可以刷新数据的本地副本:
>>> sh.refresh() # Updates the Sheet object.
>>> s.refresh() # Updates the Spreadsheet object and all its sheets.
您可以重新排列电子表格中工作表的顺序:
>>> s.sheetTitles
('My New Title', 'Foobar', 'Class Data', 'Sheet2')
>>> s.sheets[0].index
0
>>> s.sheets[0].index = 2
>>> s.sheetTitles
('Foobar', 'Class Data', 'My New Title', 'Sheet2')
>>> s.sheets[2].index = 0
>>> s.sheetTitles
('My New Title', 'Foobar', 'Class Data', 'Sheet2')
你也可以重新着色标签。(当前无法将选项卡颜色重置回“无颜色”。
贡献
如果您想为ezsheets做贡献,请查看https://github.com/asweigart/ezsheets