簡體   English   中英

使用gdata庫從公共Google電子表格中檢索數據?

[英]Retrieve data from public Google Spreadsheet using gdata library?

我正在使用Python並嘗試從公共Google電子表格( 這一個 )中檢索數據,但在開發人員文檔方面有點掙扎。

如果可能的話,我想避免客戶端身份驗證,因為它是一個公共電子表格。

這是我當前的代碼,使用gdata庫:

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

這與BadStatusLine的第3行失敗。

如何從電子表格中讀取數據?

我想首先回應一下您的文檔非常糟糕的情緒。 但是,到目前為止,這是我能夠弄清楚的。

出版公眾

您的電子表格“發布到網絡”非常重要,而不僅僅是“在網上公開”。 第一個是通過轉到“文件 - >發布到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

**提示**我發現在使用非常有文檔的python API在運行的python解釋器中使用dir()方法來查找更多關於我可以從python對象獲得的信息時,它確實非常有用。 在這種情況下,它沒有太大幫助,因為基於XML和URL的API之上的抽象非常差。

順便說一句,我確定你會想要開始處理電子表格中的實際數據,所以我會繼續並再投入一個指針。 可以使用GetListFeed(key,sheet_key,visibility ='public',projection ='values')找到組織為字典的每一行的數據。entry [0] .custom

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM