Получить ревизии электронной таблицы с помощью gdata Python api - PullRequest
2 голосов
/ 17 апреля 2011

Я пытаюсь получить ревизии электронной таблицы, используя ключ, но он просто возвращает «Неверный идентификатор ресурса».

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 ]

1 голос
/ 17 апреля 2011

Этот код немного сбивает с толку, потому что вы ссылаетесь на self, но это не является частью определения класса. Кроме того, вы говорите, что «также пытались» gd_client.get(rev_uri), но я не вижу, что вы пытались до этого - никакой другой метод gd_client не вызывается в приведенном выше коде. И, наконец, вы используете метод get, который выполняет запрос формы HTTP GET, а я не думаю, что - это то, что вы хотите сделать.

Похоже, что вы хотите get_revisions. Я просто догадываюсь - дайте мне знать, если это ошибочно.

0 голосов
/ 17 апреля 2011

Хорошо, я понял это, но не уверен, что решение полностью верно. В любом случае, это работает.

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)
...