如何使用Python读取和写入Google表格

Python是一种出色的编程语言。该语法可能看起来很奇怪和不同寻常,但是很容易学习和使用。 Minecraft Pi Edition具有强大的功能,还有许多网站和学术研究项目。

在本文中,我将向您展示如何使用Python读写Google表格。如果您刚刚开始Python之旅,那么这5个学习Python的最佳网站就是一个不错的起点。

Google设置

在进入代码之前,请先进行一些初步的介绍。在Google表格上进行设置。

首先,为自己创建一个新表格。如果已经设置,则可以跳过此步骤。在此示例中,我使用了一辆拉力赛车列表:

现在,您需要设置共享选项。您将需要生成签名凭证,听起来比实际要困难得多。导航到Google Developers Console并创建一个新项目(或使用现有项目):

为项目指定一个合适的名称,然后单击创建

Google Apps API 下,选择 Drive API

选择启用

现在,在左侧菜单中选择凭据

点击创建凭据按钮上的小箭头:

现在选择服务帐户密钥

服务帐户 JSON 下选择 App Engine默认服务帐户格式为:

单击创建,您应该下载 .json 文件。将其移到您的项目目录中,并将其重命名为 creds.json 。最后,打开文件并查找 client_email 。这应该是您在 appspot.gserviceaccount.com 上的项目的名称。使用此电子邮件地址(右上>共享>输入电子邮件)共享您的Google表格。

Google Drive端。

Python设置

有两个主要的Python版本:2.7和3.x。我将使用2.7,但这与您使用什么无关紧要。如果您感兴趣的话,Python Wiki会细分差异。您可能希望安装虚拟环境。这不在本文讨论范围之内,但是是一种很好的做法。

如果运行的是Microsoft Windows,则可能需要下载并安装Python。 Mac OS随附已安装的Python。当我使用Mac时,将以此方式创建该项目。您应该能够在Windows或Linux计算机上很好地遵循。确保您已阅读有关是否应进行切换的指南。

首先,打开一个新终端。您将需要使用pip安装一些Python软件包。这是一个推荐工具,可以非常轻松地管理软件包。它随Python一起提供。

您需要安装oauth2client。 Oauth是一个Web授权框架。我不会讨论它的细节,但是一切都必须正确,安全地运行。使用pip可以轻松安装:

pip install oauth2client

您可能还需要安装PyOpenSSL,具体取决于您的设置:

pip install PyOpenSSL

现在,您需要在GitHub上安装Anton Burnashev的Gspread。这是一个出色的库,旨在轻松使用Python访问Google表格。同样,使用pip可以轻松安装:

pip install gspread

现在打开您喜欢的文本编辑器(我正在使用Sublime Text 3)。创建一个新的Python文件,并将其保存为您的项目目录中的 google_io.py 。测试代码如下:

print 'Hello, World!'

返回您的终端并导航到您的项目目录。您可以通过 cd 命令执行此操作。您可以使用 ls 列出文件,并使用 pwd 显示工作目录。

在项目目录中,您可以执行以下Python脚本:

python google_io.py

您现在应该看到世界,您好! 在您的命令行中:

现在,Python正常运行了,让我们继续设置库。删除问候世界代码。现在,导入Gspread并再次执行代码:

import gspread

如果一切正常,将不会发生任何事情。如果出现错误,也许说没有名为X的模块,其中X是您键入的模块的名称(Gspread),请仔细检查pip是否正确安装了该模块,并且您没有进行印刷错误。

这是让您入门的代码:

import jsonimport gspreadfrom oauth2client.client import SignedJwtAssertionCredentialsjson_key = json.load(open('creds.json')) # json credentials you downloaded earlierscope = ['https://spreadsheets.google.com/feeds']credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'].encode(), scope) # get email and key from credsfile = gspread.authorize(credentials) # authenticate with Googlesheet = file.open("MUO_Python_Sheet").sheet1 # open sheet

这只是从 .json 文件中检索您的详细信息,然后使用它们进行身份验证谷歌。然后,它将打开一个名为 MUO_Python_Sheet 的工作表。您可能需要将其更改为工作表的名称(前提是您已正确共享)。 Python区分大小写,因此请确保正确输入此代码。

读取

现在,所有内容均已设置,因此读取或写入数据非常简单。这是您选择一系列单元格的方式(在本例中为所有汽车单元格):

all_cells = sheet.range('A1:C6')print all_cells

这是下面的样子:

不是很好吗? Python已转储对象的内容,而不考虑格式。由于它存储在 all_cells 变量中,因此可以像访问其他任何Python对象一样对其进行访问。这是如何以更好的格式打印所有单元格值的方法:

for cell in all_cells:	print cell.value

看起来像这样:

可以单独访问单元格(尽管这样做很慢)很多次):

A1 = sheet.acell('A2').value # this cell contains "Ford"

或者您可以使用单元格坐标:

coord = sheet.cell(3, 0).value

很容易获得一行的所有值:

row = sheet.row_values(1) # first row

或者您也可以可以获得整列。这将得到 Model 行:

col = sheet.col_values(2) # models

请记住,这两种方法都不知道您拥有多少数据。如果只有三行,则会返回多个额外的单元格。访问预定义的单元格块几乎总是更好。

书写

写回工作表同样容易,并且您可以使用单元格名称或坐标,就像阅读:

sheet.update_acell('C2', 'Blue')sheet.update_cell(2, 3, 'Blue')

GitHub上的项目页面上有更多示例。

如果您写的是重要的工作表,则不妨考虑安全性细胞。将值存储在某个单元格中(我使用“不要删除此值"),然后首先读取该单元格。如果内容已更改,则说明工作表中已添加或删除了列,因此请勿继续编写!这是可以实现的方法:

if sheet.acell('B3') != 'SAFETY':	# something has changed in the sheet, DO NOT PROCEED	raise Exception("Oh My, I'm not ready for this.")else:	# continue with your writing	sheet.update_acell('C2','Blue')

这是一个好习惯。这样可以确保您的脚本不会意外写入错误的列。它不能替代适当的备份(您确实有备份,对吧?)。

现在,您已经了解了基础知识,那就去做一些很棒的事情吧!了解如何使用cron在Linux中计划任务(或检出Windows替代方案)。也许您可以为相框供电或制作办公室仪表板,这就是我要做的!

如果您还使用Excel,请学习如何将Excel数据导入Python脚本。

标签: Google云端硬盘 Google表格 Python