Загрузите электронную таблицу из Документов Google, используя Python - PullRequest
31 голосов
/ 20 июля 2010

Можете ли вы привести пример Python для загрузки электронной таблицы Документов Google с указанием ее ключа и идентификатора таблицы (gid)? Я не могу.

Я изучил версии 1, 2 и 3 API. Мне не повезло, я не могу выяснить их API-интерфейс, подобный ATOM-подобным каналам, приватный метод gdata.docs.service.DocsService._DownloadFile говорит, что я не авторизован, и я не хочу сам писать всю систему аутентификации в Google Login. Я собираюсь нанести удар себе в лицо из-за разочарования.

У меня есть несколько таблиц, и я хочу получить к ним доступ следующим образом:

username = 'mygooglelogin@gmail.com'
password = getpass.getpass()

def get_spreadsheet(key, gid=0):
    ... (help!) ...

for row in get_spreadsheet('5a3c7f7dcee4b4f'):
    cell1, cell2, cell3 = row
    ...

Пожалуйста, спасите мое лицо.


Обновление 1: Я пробовал следующее, но комбинация Download() или Export(), похоже, не работает. (Документы для DocsService здесь )

import gdata.docs.service
import getpass
import os
import tempfile
import csv

def get_csv(file_path):
  return csv.reader(file(file_path).readlines())

def get_spreadsheet(key, gid=0):
  gd_client = gdata.docs.service.DocsService()
  gd_client.email = 'xxxxxxxxx@gmail.com'
  gd_client.password = getpass.getpass()
  gd_client.ssl = False
  gd_client.source = "My Fancy Spreadsheet Downloader"
  gd_client.ProgrammaticLogin()

  file_path = tempfile.mktemp(suffix='.csv')
  uri = 'http://docs.google.com/feeds/documents/private/full/%s' % key
  try:
    entry = gd_client.GetDocumentListEntry(uri)

    # XXXX - The following dies with RequestError "Unauthorized"
    gd_client.Download(entry, file_path)

    return get_csv(file_path)
  finally:
    try:
      os.remove(file_path)
    except OSError:
      pass

Ответы [ 11 ]

0 голосов
/ 30 июля 2010

Это не полный ответ, но Андреас Калер написал интересное решение CMS, используя Google Docs + Google App Engline + Python.Не имея никакого опыта в этой области, я не могу точно понять, какая часть кода может быть вам полезна, но посмотрите на это.Я знаю, что он взаимодействует с учетной записью Google Docs и воспроизводит файлы, поэтому я чувствую, что вы поймете, что происходит.По крайней мере, он должен указывать вам правильное направление.

Google AppEngine + Документы Google + Некоторый Python = Простая CMS

...