如何用python读写google工作表

Python看起来很奇怪,也很不寻常,但是它很容易学习和使用。在本文中,我将向您展示如何使用Python读取和写入Google工作表。...

Python是一种优秀的编程语言。语法可能看起来奇怪和不寻常,但它很容易学习和使用。它支持Minecraft Pi版,以及一系列网站和学术研究项目。

python-google-sheets

在本文中,我将向您展示如何使用Python读写googlesheets。如果您刚刚开始Python之旅,那么以下5个学习Python的最佳网站是一个很好的起点。

谷歌设置

在跳转到代码之前,需要在Google表单上进行一些初始设置。

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

google sheets rally cars

现在您需要设置共享选项。您将需要生成签名凭据,这听起来比实际情况更困难。导航到Google开发者控制台并创建新项目(或使用现有项目):

google developers c***ole

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

developers c***ole project name

在Google Apps API下面选择Drive API:

google apps apis

选择启用:

google_api_enable

现在选择左侧菜单上的凭据:

google api credentials

单击“创建凭据”按钮上的小箭头:

google api create credentials

现在选择服务帐户密钥:

google api service account

选择service account下的App Engine default service account和JSON作为格式:

google api service account creation

单击create,您应该下载.json文件。将此文件移到项目目录并重命名它creds.json. 最后,打开文件并查找客户端电子邮件。这应该是您的项目名称appspot.gserviceaccount.com. 使用此电子邮件地址共享您的Google工作表(右上角>共享>输入电子邮件)。

这是谷歌驱动方面的。

python设置

有两个主要的Python版本:2.7和3.x。我将使用2.7,但是使用什么并不重要。如果您感兴趣的话,pythonwiki会分解这些差异。您可能希望安装虚拟环境。这超出了本文的讨论范围,但是是一个好的实践。

如果您运行的是Microsoft Windows,则可能需要下载并安装Python。Mac操作系统已经安装了Python。因为我使用的是Mac,所以这个项目将被创建成这样。您应该能够在Windows或Linux机器上很好地跟踪。你一定要看我们的指南,看你是否应该换。

首先,打开一个新的终端。您需要使用pip来安装一些Python包。这是一个推荐工具,使管理包变得非常容易。它与Python一起提供。

您需要安装oauth2client。Oauth是一个web授权框架。我将不讨论它的细节,但它是所有工作的正确和安全的必要条件。使用pip很容易安装:

pip install oauth2client

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

pip install PyOpenSSL

现在您需要在GitHub上安装Anton Burnashev的Gspread。这是一个非常好的库,它的目的是使用Python访问googlesheets变得非常容易。同样,使用pip很容易安装:

pip install gspread

现在打开你最喜欢的文本编辑器(我使用的是Sublime文本3)。创建一个新的Python文件,并将其作为google保存在您的项目目录中_输入输出. 测试代码如下:

print 'Hello, World!'

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

一旦进入项目目录,就可以像这样执行Python脚本:

python google_io.py

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

python hello world

既然Python工作正常了,那么让我们继续设置库。删除hello world代码。现在导入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文件中检索您的详细信息,然后使用它们向Google进行身份验证。然后打开一个名为MUO\u Python\u sheet的表。您可能需要将其更改为工作表的名称(前提是您已正确共享)。Python是区分大小写的,所以请确保您正确输入了这段代码。

阅读

现在一切都设置好了,读取或写入数据就很简单了。下面是如何选择一系列单元格(在本例中是所有的car单元格):

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

下面是它的样子:

google_sheets_python_read

不是很好吧?Python已经转储了对象的内容,而不考虑格式化。因为它存储在all\u cells变量中,所以可以像访问任何其他Python对象一样访问它。以下是如何以更好的格式打印所有单元格值:

for cell in all_cells:print cell.value

看起来是这样的:

python google sheets all values

可以单独访问单元格(但如果多次访问,速度会很慢):

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

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

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

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

row = sheet.row_values(1) # first row

或者你可以得到一整列。这将获取模型行:

col = sheet.col_values(2) # models

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

写作

写回工作表同样简单,你可以使用单元格名称或坐标,就像阅读:

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

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

如果你写的是重要的工作表,你可能希望考虑一个安全单元。在某个单元格中存储一个值(我使用“Don'tdeletethis”),然后首先读取该单元格。如果内容发生了变化,那么您的工作表中的列已经被添加或删除,所以不要继续写!以下是实现这一目标的方法:

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

这是一个很好的练习。它确保脚本不会意外写入错误的列。它不能替代正确的备份(你确实有备份,对吗?)。

既然你已经知道了基本知识,那就去做点酷的吧!了解如何使用cron在Linux中调度任务(或签出Windows替代方案)。也许你可以给相框加电或者做个办公室仪表板——我就是这么做的!或者为什么不和Heroku一起主持Python网站呢?

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

  • 发表于 2021-03-16 13:43
  • 阅读 ( 583 )
  • 分类:编程

你可能感兴趣的文章

如何在任何使用python的计算机上安装selenium webdriver

... 如何用python设置selenium webdriver ...

  • 发布于 2021-03-10 21:27
  • 阅读 ( 469 )

学习python?下面是如何复制文件

... 如何用python的子进程模块复制文件 ...

  • 发布于 2021-03-11 10:45
  • 阅读 ( 337 )

如何用python编程和控制arduino

Python风靡了编码界。随着这门新语言的兴起,DIY电子领域也蓬勃发展。来自Arduino和Raspberry Pi等公司的开发板和单板计算机改变了人们生产家用电子产品的方式。如果你能用Python编程一个Arduino,那不是很棒吗? ...

  • 发布于 2021-03-11 16:20
  • 阅读 ( 881 )

如何用selenium制作网络爬虫

Web爬网对于自动执行网站上常规执行的某些任务非常有用。你可以像人类一样编写一个爬虫来与网站交互。 ...

  • 发布于 2021-03-11 23:41
  • 阅读 ( 360 )

如何用excel或google表替换索引卡

数字索引卡可能和纸质索引卡一样有用,甚至更多。当我和microsoftword分享**索引卡的价值时,我就开始证明这一点。但是传统索引卡的问题是什么呢?它们不可搜索。 ...

  • 发布于 2021-03-12 12:04
  • 阅读 ( 211 )

如何用google脚本在google表单中发送电子邮件

googlescripts是一个强大的工具,可以用来自动化Google生产力工具,比如表单和文档。自动发送电子邮件的能力使它成为一个非常强大的工具。 ...

  • 发布于 2021-03-14 04:11
  • 阅读 ( 710 )

数组和列表在python中的工作方式

...挥他们的全部潜能。今天我将通过基本知识和一些简单的Python示例来讨论您。 ...

  • 发布于 2021-03-15 17:19
  • 阅读 ( 230 )

了解如何使用python虚拟环境

无论您是一名经验丰富的Python开发人员,还是刚刚起步,学习如何设置虚拟环境对于任何Python项目都是必不可少的。和我一起讨论Python虚拟环境的所有知识。 ...

  • 发布于 2021-03-16 10:00
  • 阅读 ( 234 )

如何用raspberry-pi和ifttt构建光感应智能开关

黄昏到黎明开关和定时器开关都是方便的方式来自动控制您的灯光。如果你能将两者结合起来,甚至把它们连接到互联网上,形成一个真正的智能照明系统,那不是很好吗? ...

  • 发布于 2021-03-22 21:01
  • 阅读 ( 263 )

如何用树莓皮打造diy谷歌家庭助理

语音控制助理很快就变得司空见惯了。许多家庭都有一个Alexa或googlehome来控制从灯光到媒体的一切,甚至计时。 ...

  • 发布于 2021-03-22 22:23
  • 阅读 ( 359 )