2011-04-16 49 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) 
相关问题