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

Ric*_*ard 7 python gdata google-sheets

我正在使用Python并尝试从公共Google电子表格(这一个)中检索数据,但在开发人员文档方面有点挣扎.

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

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

client = gdata.spreadsheet.service.SpreadsheetsService()  
key = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc'  
worksheets_feed = client.GetWorksheetsFeed(key)  
Run Code Online (Sandbox Code Playgroud)

这与BadStatusLine的第3行失败.

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

Pep*_*obe 17

我想首先回应一下您的文档非常糟糕的情绪.但是,到目前为止,这是我能够弄清楚的.

出版公众

您的电子表格"发布到网络"非常重要,而不仅仅是"在网上公开".第一个是通过转到"文件 - >发布到Web ..."菜单项来实现的.第二个是通过单击电子表格左上角的"共享"按钮来实现的.

我查了一下,你的密钥='0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc'的电子表格只是"公开在网上".我制作了一份副本,用于我的示例代码.我的副本有一个键='0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE',您稍后会在我的示例代码中看到它.

这种"公共网络"与"网络上公布"的废话显然是一个常见的混淆点.它实际上记录在主API文档的"可见性和预测"部分的红色框中.但是,阅读该文档真的很难.

可见性和预测

正如同一份文件所述,除了"完整"之外,还有其他预测.实际上(没有文档记录),"完整"似乎不能很好地与"公共"的可见性一起发挥作用,这在制作未经认证的电话时也很重要.

您可以从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
Run Code Online (Sandbox Code Playgroud)

**提示**我发现在使用非常有文档的python API 在运行的python解释器中使用dir()方法来查找更多关于我可以从python对象获得的信息时,它确实非常有用.在这种情况下,它没有太大帮助,因为基于XML和URL的API之上的抽象非常差.

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