【问题标题】:Download HTML as Zip Issue将 HTML 下载为 Zip 问题
【发布时间】:2018-03-19 20:49:20
【问题描述】:

我正在使用 google drive API 下载 google 表格。不幸的是,我需要将它作为 HTML 下载以嵌入到电子邮件中,但是当我运行时

export_request = drivesrvc.files().export_media(fileId=file_id, mimeType='application/zip')
fh = io.FileIO("data.zip", "wb")
downloader = apiclient.http.MediaIoBaseDownload(fh, export_request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print
    "Download %d%%." % int(status.progress() * 100)

请求通过,但 zip 文件为空!如果我尝试任何其他文件格式,它就可以正常工作,但由于某种原因,zip 总是为空,我需要获取 HTML。

文档指定上述调用应返回一个 Zip 存档,其中包含与 google 工作表中的工作表相对应的 HTML 文件,但我得到的只是一个空的 Zip 存档。

【问题讨论】:

  • 为什么要检索 HTML 并将其保存为 .zip 文件?这不是一个有效的 zip 文件。
  • Google Drive API 可以选择将电子表格导出到 zip 存档中,其中包含与 Google 工作表中的工作表相对应的 HTML 文件。我正在尝试这样做,但它总是返回一个空的 zip 文件,而其他导出选项(excel、pdf、csv 等)工作得很好。没有直接下载 HTML 的选项,它必须始终以 zip 存档的形式出现。
  • 我认为你的程序只是按照你说的做,把它下载为一个 zip 文件,而不是把它放在一个 zip 文件中并下载它。如果您将其下载为 mimetype img/jpeg 等,也会发生同样的情况。
  • 根据他们 API 上的Google documentation,这应该返回一个包含 HTML 格式的电子表格的 zip。

标签: python python-3.x google-sheets google-drive-api


【解决方案1】:

我也遇到过同样的问题,你可以试试下面的代码。它对我有用!

url = "https://docs.google.com/spreadsheets/d/<sheetid>/export?format=zip"
response = drivesrvc._http.request(url)
with open(os.path.join("data.zip"), "wb") as wer:
   for res in response:
      wer.write(str(res))

【讨论】:

  • 最终采取了另一种方法来解决我的问题。刚试过,效果不错,以后肯定有用!
猜你喜欢
  • 2013-11-02
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
相关资源
最近更新 更多