【问题标题】:Retrieve data from public Google Spreadsheet using gdata library?使用 gdata 库从公共 Google 电子表格中检索数据?
【发布时间】:2011-11-25 13:04:23
【问题描述】:

我正在使用 Python 并尝试从公共 Google 电子表格 (this one) 中检索数据,但在使用 the developer documentation 时遇到了一些困难。

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

这是我当前的代码,带有 gdata 库:

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

这在第 3 行以 BadStatusLine 失败。

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

【问题讨论】:

  • Richard 不确定这是否对您有帮助,但您可以将电子表格导出为 Excel 并使用 xlrd (pypi.python.org/pypi/xlrd) 读取数据。
  • 谢谢!我想使用 gdata,但是文档很糟糕,似乎没有人知道如何使用它...

标签: python gdata google-sheets


【解决方案1】:

我想首先回应您的观点,即文档真的很差。但是,这是我目前能够弄清楚的。

公开发布

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

我检查了,您的电子表格键 = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc' 只是“在网络上公开”。我制作了一个副本以用于我的示例代码。我的副本有一个密钥 = '0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE',稍后您将在我的示例代码中看到它。

这种“在网上公开”与“在网上发布”的废话显然是一个常见的混淆点。它实际上记录在主要 API 文档的 "Visibilities and Projections" 部分的红色框中。但是,阅读该文档确实很难。

可见性和预测

正如同一份文件所说,除了“完整”之外,还有其他预测。事实上(未记录),“完整”似乎不能很好地与“公共”的可见性一起发挥作用,这在进行未经身份验证的调用时也很重要。

您可以从pydocs 中了解到,SpreadsheetsService 对象上的许多方法都可以采用“可见性”和“投影”参数。我只知道“公共”和“私人”的可见性。如果您了解其他任何人,我也想了解他们。似乎在进行未经身份验证的呼叫时应该使用“public”。

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

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

顺便说一句,我确定您会想要开始处理电子表格中的实际数据,所以我将继续并再添加一个指针。可以使用 GetListFeed(key, sheet_key, visibility='public', projection='values').entry[0].custom

找到组织为字典的每一行的数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多