Python 使用gdata库从公共Google电子表格检索数据?

Python 使用gdata库从公共Google电子表格检索数据?,python,gdata,google-sheets,Python,Gdata,Google Sheets,我正在用Python工作,试图从一个公共的Google电子表格()中检索数据,但在这方面有点困难 我希望尽可能避免客户端身份验证,因为它是一个公共电子表格 以下是我当前使用gdata库的代码: client = gdata.spreadsheet.service.SpreadsheetsService() key = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc' worksheets_feed = client.GetWorksheetsF

我正在用Python工作,试图从一个公共的Google电子表格()中检索数据,但在这方面有点困难

我希望尽可能避免客户端身份验证,因为它是一个公共电子表格

以下是我当前使用gdata库的代码:

client = gdata.spreadsheet.service.SpreadsheetsService()  
key = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc'  
worksheets_feed = client.GetWorksheetsFeed(key)  
这在第3行BadStatusLine上失败


如何从电子表格中读取数据

首先,我想回应一下您的观点,即文档非常糟糕。但是,这是我到目前为止能够弄明白的

公开发布

您的电子表格必须“发布到Web”,而不仅仅是“在Web上公开”,这一点非常重要。首先,请转到“文件->发布到Web…”菜单项。第二种方法是单击电子表格左上角的“共享”按钮

#!/usr/bin/python
from gdata.spreadsheet.service import SpreadsheetsService

key = '0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE'

client = SpreadsheetsService()
feed = client.GetWorksheetsFeed(key, visibility='public', projection='basic')

for sheet in feed.entry:
  print sheet.title.text
我检查过了,您的电子表格的key='0ATNCGUWD4YTEX3NZD2AZYNMVMZGRHY3NMB3I2ZXC'只是“在web上公开的”。我制作了一份副本,以供示例代码使用。我的副本有一个键='0aip8kl9b7wdidfbzrgpezkhoulvpage2x0f2ywtwyke',稍后您将在我的示例代码中看到

这种“网上公开”与“网上发布”的胡说八道显然是一种常见的困惑。它实际上记录在主要API文档部分的一个红色框中。然而,阅读该文件确实很困难

可见性和投影

正如同一份文件所说,除了“完整”之外,还有其他预测。事实上(未记录),“完整”似乎与“公共”的可见性不符,这在拨打未经验证的电话时也很重要

您可以从中了解到,电子表格服务对象上的许多方法都可以采用“可见性”和“投影”参数。我只知道“公共”和“私人”可视性。如果你知道其他人,我也想知道。在打未经验证的电话时,您应该使用“public”

至于预测,则更为复杂。我知道“完整”、“基本”和“价值”预测。我只是幸运地通过阅读优秀javascript库的源代码找到了“值”投影。而且,猜猜看,这就是让事情运转的秘密缺失成分

工作代码

下面是一些代码,您可以使用这些代码从我的电子表格副本中查询工作表

#!/usr/bin/python
from gdata.spreadsheet.service import SpreadsheetsService

key = '0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE'

client = SpreadsheetsService()
feed = client.GetWorksheetsFeed(key, visibility='public', projection='basic')

for sheet in feed.entry:
  print sheet.title.text
**提示** 我发现,在运行python解释器中使用这个方法来了解更多关于我可以从python对象中获得的信息,在使用大量文档化的python API时非常有用。在这种情况下,这没有多大帮助,因为基于XML和URL的API上面的抽象非常糟糕


顺便说一句,我肯定你会想开始处理电子表格中的实际数据,所以我会继续,再投一个指针。可以使用GetListFeed(key,sheet_key,visibility='public',projection='values')找到组织为字典的每一行的数据。条目[0]。自定义

Richard不确定这是否有帮助,但您可以将电子表格导出为Excel并使用xlrd()读取数据。谢谢!我想使用gdata,但是文档太可怕了,似乎没有人知道如何使用它。。。