Ich versuche, Python-Prozedur zu schreiben, um eine Tabelle aus Google Spreadsheets herunterzuladen und speichern Sie sie als .xls. hier ist mein CodeLaden Sie Google Spreadsheet herunter und speichern Sie als xls
import os
import sys
from getpass import getpass
import gdata.docs.service
import gdata.spreadsheet.service
'''
get user information from the command line argument and
pass it to the download method
'''
def get_gdoc_information():
email ="mygmailaccount"
password ="mypassword"
gdoc_id = ['google_id1','googleid2','googleidn']
for doc_id in gdoc_id:
try:
download(doc_id, email, password)
except Exception, e:
raise e
#python gdoc.py 1m5F5TXAQ1ayVbDmUCyzXbpMQSYrP429K1FZigfD3bvk#gid=0
def download(doc_id, email, password, download_path=None,):
print "Downloading the XLS file with id %s" % doc_id
gd_client = gdata.docs.service.DocsService()
#auth using ClientLogin
gs_client = gdata.spreadsheet.service.SpreadsheetsService()
gs_client.ClientLogin(email, password)
#getting the key(resource id and tab id from the ID)
resource = doc_id.split('#')[0]
tab = doc_id.split('#')[1].split('=')[1]
resource_id = 'spreadsheet:'+resource
if download_path is None:
download_path = os.path.abspath(os.path.dirname(__file__))
file_name = os.path.join(download_path, '%s.xls' % (doc_id))
print 'Downloading spreadsheet to %s...' % file_name
docs_token = gd_client.GetClientLoginToken()
gd_client.SetClientLoginToken(gs_client.GetClientLoginToken())
gd_client.Export(resource_id, file_name, gid=tab)
gd_client.SetClientLoginToken(docs_token)
print "Download Completed!"
if __name__=='__main__':
get_gdoc_information()
Jedes Mal, wenn ich versuche, es zu laufen, ich unten
einen gdata Fehler erhaltengdata.service.RequestError: {'status': 401, 'body': '<HTML>\n<HEAD>\n<TITLE>Unauthorized</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Unauthorized</H1>\n<H2>Error 401</H2>\n</BODY>\n</HTML>\n', 'reason': 'Unauthorized'}
Am mit gdata Bibliothek. Ich habe mit diesem ganzen Tag gekämpft und kann anscheinend nicht herausfinden, was passiert. Kann jemand bitte herausfinden und assit? Jedes andere minimale Skript, das meinen oben beschriebenen Zweck erreichen kann, wird sehr geschätzt. Vielen Dank