2011-04-16 74 views
2

我試圖使用該鍵獲取電子表格的修訂版,但它只是返回「無效的資源ID」。使用gdata獲取電子表格的修訂版Python api

from gdata.alt import appengine 
from gdata.spreadsheet import service 
from gdata.docs.client import DocsClient 

self.ss_svc = service.SpreadsheetsService() 
# ... login code ... 
gd_client = DocsClient(self.ss_svc.GetClientLoginToken()) 
rev_uri = "https://spreadsheets.google.com/feeds/spreadsheets/private/full/%s/revisions" % spreadsheet_key 

# i also tried: 
rev_uri = "spreadsheet%" + spreadsheet_key 
rev_feed = gd_client.get(rev_uri) 

沒有用。請幫忙。

回答

1

此代碼有點令人困惑,因爲您參考了self,但這看起來並不是類定義的一部分。此外,你說你「也試過」gd_client.get(rev_uri),但我沒有看到你之前嘗試過的 - 在上面的代碼中沒有其他方法gd_client被調用。最後,您使用的是執行http GET表單請求的get方法,我不認爲認爲是您想要做的。

看起來像你想要的是get_revisions。我只是猜測 - 讓我知道如果這是錯誤的。

+0

我已經試過了。我怎樣才能獲得資源ID?使用ccc鍵總是說「無效的資源ID」。對不起,如果帖子不完全清楚。此代碼嚴重削減,使其儘可能可讀。 – 2011-04-16 20:43:37

+0

哇!得到它的工作。有時你只需要有人告訴你嘗試一下你已經嘗試過的東西。非常感謝!我會發布答案。 – 2011-04-16 20:54:46

+0

是的,我只是想說,我認爲'%'字符應該是':' - 這肯定是問題所在。 – senderle 2011-04-16 21:22:46

0

好吧我想通了,但不知道如果解決方案是完全正確的。無論哪種方式,它的作品。

class SpreadsheetLoader(object): 
    def __init__(self,config): 
    from gdata.alt import appengine 
    from gdata.spreadsheet import service 
    from gdata.docs.client import DocsClient 

    self.ss_svc = service.SpreadsheetsService() 

    appengine.run_on_appengine(self.ss_svc, store_tokens=False, single_user_mode=True) 
    self.ss_svc.email = config.dev_email 
    self.ss_svc.password = config.dev_pwd 
    self.ss_svc.source = 'Spreadsheet Loader' 
    self.ss_svc.ProgrammaticLogin() 

    feed = self.ss_svc.GetSpreadsheetsFeed(config.spreadsheet_key) 

    # token = self.ss_svc.GetClientLoginToken() 
    # gd_client = DocsClient(token) 
    # token passing doesn't seem to work. It errors out with "str doesn't have some_method" :(
    # so I just login again... whatever. 
    gd_client.client_login(config.dev_email, config.dev_pwd, "My App") 

    resource_id = "spreadsheet:" + config.spreadsheet_key 
    rev_feed = gd_client.get_revisions(resource_id) 
相關問題