2011-09-26 21 views
7

我正在使用Python并尝试从公开的Google Spreadsheet(this one)中检索数据,但与the developer documentation挣扎了一下。使用gdata库检索公开Goog​​le Spreadsheet中的数据?

如果可能的话,我想避免客户端身份验证,因为它是一个公共电子表格。

这里是我当前的代码,使用GData库:

client = gdata.spreadsheet.service.SpreadsheetsService() 
key = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc' 
worksheets_feed = client.GetWorksheetsFeed(key) 

这未能在第3行与BadStatusLine。

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

+0

Richard不知道这是否对你有帮助,但您可以将电子表格导出为Excel并使用xlrd(http://pypi.python.org/pypi/xlrd)读取数据。 –

+2

谢谢!我想使用gdata,但文档是恶魔般的,没有人似乎知道如何使用它... – Richard

回答

17

我希望通过回应您的观点,认为文档非常差。但是,这是我迄今为止能够弄清楚的。

发布公共的

这是非常重要的,你的电子表格中的“发布到网上”,而不是仅仅是“在网络上公开。”第一个是通过转到“文件 - >发布到网络...”菜单项来实现的。第二个是通过点击电子表格左上角的“分享”按钮实现的。

我检查过了,你的电子表格中键='0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc'只是“在网络上公开”。我制作了一个副本来玩弄我的示例代码。我的副本有一个关键字='0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE',您将在稍后的示例代码中看到它。

这个“网上公开”与“网上发布”无稽之谈显然是一个普遍混淆的问题。它实际上记录在主API文档的"Visibilities and Projections"部分的红色框中。但是,阅读该文档确实很难。

可视性和预测

由于同样的文件说,还有比其他预测“满了。”事实上(无证),“完整”似乎不能很好地展现“公开”的可见性,这在设置未经认证的呼叫时也很重要。

您可以从pydocs中收集许多SpreadsheetsService对象上的方法可以采用“可见性”和“投影”参数的方法。我只知道“公共”和“私人”的可见性。如果你了解其他人,我也想知道他们。看来“公开”是你在进行未经认证的调用时应该使用的。

至于投影,它更加复杂。我知道“完整”,“基本”和“价值”预测。我只有幸运,通过阅读优秀的Tabletop 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 

** **提示我 发现它真的很有帮助与可怕的记录蟒蛇的API的使用在运行的Python解释器的dir()方法时要了解更多的信息种类,我可以从Python得到对象。在这种情况下,它不会有太大帮助,因为XML和基于URL的API上面的抽象很差。顺便说一句,我相信你会想要开始处理电子表格中的实际数据,所以我会继续前进,并在另一个指针中折腾。每一行组织成一个字典的数据可以使用GetListFeed(key,sheet_key,visibility ='public',projection ='values')找到。entry [0] .custom

相关问题