使用gdata Python API获取电子表格的修订版
我想通过一个关键字来获取一个电子表格的版本记录,但它总是返回“无效的资源ID”。
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)
我试了很多方法,都不行。请帮帮我。
2 个回答
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)
1
这段代码有点让人困惑,因为你提到了 self
,但这看起来并不是在一个类的定义里。另外,你说你“也试过” gd_client.get(rev_uri)
,但我没看到你之前尝试了什么——在上面的代码中没有调用 gd_client
的其他方法。最后,你使用了 get
方法,这个方法是用来发送一个 HTTP GET 请求的,我觉得这可能不是你想要的。
看起来你想要的是 get_revisions
。我只是猜的——如果我错了请告诉我。