Google Drive API下载表问题

时间:2016-02-24 17:53:21

标签: python http google-drive-api

我使用Google Drive API导出Google表格并在本地保存,但我遇到了以下问题:

其中一张纸张未正确下载。我不确定它是不是因为它的大小或复杂性,但是通过使用文档中提出的代码,这个过程会被卡住几分钟而且会超时。

以下是documentation中显示的代码,对我的工作流程进行了细微更改

file_id = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'  # Changed to my file id
mimetype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'  # MS Excel
request = drive_service.files().export_media(fileId=file_id, mimeType=mimetype)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while not done:
    status, done = downloader.next_chunk()
if done:
    # process the downloaded file

由于我不需要所有工作表,我通过使用HTTP请求手动请求导出并在URL上设置gid=0参数来指示所需的工作表,尝试了另一种解决方案。

首先,我尝试了简单的get API调用,以确保其有效,如下所示:

curl https://www.googleapis.com/drive/v3/files/<my_file_id>?access_token=<my_access_token>

工作正常,我得到了文件详细信息的回复。

之后,我尝试了下面的export请求,但即使请求与文档中的请求相同,我也总是得到TEMPORARY REDIRECT响应。

curl https://www.googleapis.com/drive/v3/files/<my_file_id>/export?mimeType=application%2Fvnd.openxmlformats-officedocument.spreadsheetml.sheet&access_token=<my_access_token>
<HTML>
<HEAD>
<TITLE>Temporary Redirect</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Temporary Redirect</H1>
The document has moved <A HREF="big_giant_huge_url">here</A>.
</BODY>
</HTML>

所以我的问题是:

  • 有没有办法使用官方Python API指定要下载的工作表或解决下载问题?
  • 有人知道我的HTTP请求中Temporary Redirect的原因吗?
  • 是否有另一种下载表格的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:0)

所以,经过很长一段时间的结束,我们找不到解决这个问题的办法,最后用一种不同的方法来解决这个问题。

以下是我们的所作所为:

  • 搜索了我们想要的所有独特工作表
  • 将它们复制(链接)到云端硬盘
  • 上的单独文件中
  • 使用API​​分别获取每个文件

由于使用官方API是一个非常直接的解决方案,因此取得了成功。

将所有内容复制到其他文件有点麻烦,但AFAIK是目前唯一可行的方法。