【发布时间】:2016-07-25 11:29:48
【问题描述】:
我正在尝试编写 python 程序以从 google spreedsheets 下载电子表格并将其保存为 .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()
每当我尝试运行它时,我都会在下面收到 gdata 错误
gdata.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'}
我正在使用 gdata 库。 我整天都在挣扎,似乎无法弄清楚发生了什么。 任何人都可以弄清楚并提供帮助吗? 任何其他可以实现上述目的的最小脚本将不胜感激。 谢谢
【问题讨论】:
标签: python google-sheets gdata