Google驱动API下载Sheet问题
Google Drive API download Sheet problems
我正在使用 Google 驱动器 API 导出 Google 表格并将它们保存在本地,但我遇到了以下问题:
其中一个 sheet 没有正确下载。我不确定是不是因为它的大小或复杂性,但通过使用文档中建议的代码,该过程会卡住几分钟并超时。
下面是 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
由于我不需要所有 sheet,我尝试了另一种解决方案,方法是使用 HTTP 请求手动请求导出并将 URL 上的 gid=0
参数设置为指明所需的 sheet.
首先我尝试了简单的 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>
所以我的问题是:
- 有没有办法指定sheet使用官方Python下载API或者解决下载问题?
- 有人知道我的 HTTP 请求中
Temporary Redirect
的原因吗?
- 是否有其他下载 sheet 的解决方案?
谢谢!
所以,久而久之,我们找不到解决这个问题的方法,最终用不同的方法来解决这个问题。
这是我们所做的:
- 搜索了我们想要的所有独特表格
- 将它们复制(链接)到云端硬盘上的单独文件
- 使用 API 分别获取每个文件
这导致了成功,因为它是使用官方 APIs 的非常直接的解决方案。
必须将所有内容复制到其他文件有点麻烦,但据我所知,这是目前唯一的方法。
我正在使用 Google 驱动器 API 导出 Google 表格并将它们保存在本地,但我遇到了以下问题:
其中一个 sheet 没有正确下载。我不确定是不是因为它的大小或复杂性,但通过使用文档中建议的代码,该过程会卡住几分钟并超时。
下面是 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
由于我不需要所有 sheet,我尝试了另一种解决方案,方法是使用 HTTP 请求手动请求导出并将 URL 上的 gid=0
参数设置为指明所需的 sheet.
首先我尝试了简单的 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>
所以我的问题是:
- 有没有办法指定sheet使用官方Python下载API或者解决下载问题?
- 有人知道我的 HTTP 请求中
Temporary Redirect
的原因吗? - 是否有其他下载 sheet 的解决方案?
谢谢!
所以,久而久之,我们找不到解决这个问题的方法,最终用不同的方法来解决这个问题。
这是我们所做的:
- 搜索了我们想要的所有独特表格
- 将它们复制(链接)到云端硬盘上的单独文件
- 使用 API 分别获取每个文件
这导致了成功,因为它是使用官方 APIs 的非常直接的解决方案。
必须将所有内容复制到其他文件有点麻烦,但据我所知,这是目前唯一的方法。