Загрузите электронную таблицу с Google Docs с помощью Python

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

Я обыскивал версии 1, 2 и 3 API. У меня нет удачи, я не могу выяснить их сложную подобную АТОМУ подачу API, 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

32
задан Mark Johnson 18 April 2011 в 03:24
поделиться

2 ответа

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

Google AppEngine + Google Docs + Python = Simple CMS

0
ответ дан 27 November 2019 в 20:14
поделиться

Вы можете попробовать использовать метод AuthSub, описанный в разделе Экспорт электронных таблиц документации.

Получите отдельный токен входа для службы электронных таблиц и замените его для экспорта. Добавление этого в код get_spreadsheet помогло мне:

import gdata.spreadsheet.service

def get_spreadsheet(key, gid=0):
    # ...
    spreadsheets_client = gdata.spreadsheet.service.SpreadsheetsService()
    spreadsheets_client.email = gd_client.email
    spreadsheets_client.password = gd_client.password
    spreadsheets_client.source = "My Fancy Spreadsheet Downloader"
    spreadsheets_client.ProgrammaticLogin()

    # ...
    entry = gd_client.GetDocumentListEntry(uri)
    docs_auth_token = gd_client.GetClientLoginToken()
    gd_client.SetClientLoginToken(spreadsheets_client.GetClientLoginToken())
    gd_client.Export(entry, file_path)
    gd_client.SetClientLoginToken(docs_auth_token) # reset the DocList auth token

Обратите внимание, что я также использовал Export, поскольку Download, похоже, дает только PDF-файлы.

17
ответ дан 27 November 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: