17

最近在使用文档列表 API 时,Google Docs 转换似乎出现了问题。对现有文档条目所做的更新将不会正确转换为 Google 文档格式,并且不会显示文档中的图像。

重现步骤

  1. 我有一个.docx包含几行文本和一个图像的文件。

  2. 使用文档列表 API,我将文件作为NEW条目上传(打开转换),它工作正常。我可以在 Google Docs 中打开转换后的文档,看起来不错。

  3. 接下来,使用 API 等文档,我再次将文件作为 UPDATE原始条目上传(打开转换)。现在,当我在 Google Docs 中打开转换后的文档时,图像丢失了。有一个带有旋转忙碌指示器的空白矩形出现在图像应该出现的位置。

附加信息

所以问题只发生在更新现有条目时。作为全新条目上传的文件没有这个问题。

这一定是在过去 24 小时左右发生故障...我有一个运行良好的现有应用程序,现在它更新的所有文档都缺少图像。后端是否有更新导致此问题发生?

我已经使用包含各种图像的各种 .docx 和 .doc 文件对此进行了测试。

请帮忙……这已经完全坏了一个星期了。我只是想知道这是否是 Google 的工程师意识到的一个问题,以及是否有人正在调查它。

4

1 回答 1

0

(2020 年 10 月):现在是 2020 年,这个问题真的过时了。Google Documents List API于 2012年弃用,于 2015 年关闭,取而代之的是Google Drive API

Drive API 能够毫无问题地导入(上传和转换)Word 文件,无论是使用图像创建还是更新为 Google Docs 格式。下面是这两种情况的一些伪代码(Python)。第一次上传一个名为的Word文件person.docx,其中包含一个图像。上传后,会向用户显示一条消息,您可以验证图像是否在 Google Doc 中。

DOCX_FILE = 'person.docx'
DOCS_MIME = 'application/vnd.google-apps.document'
    :
    : # credentials code for user acct auth (OAuth client ID) or service acct auth
    :
DRIVE = discovery.build('drive', 'v3', ...) # http= or creds= dep on auth type
body = {'name': DOCX_FILE, 'mimeType': DOCS_MIME}
res = DRIVE.files().create(media_body=DOCX_FILE, body=body,
        fields='name,mimeType').execute()
print('Uploaded "%s" (as %s)' % (res['name'], res['mimeType']))

正如 OP 所提到的,创建文件和以前一样完美。如果您编辑现有 Doc,您需要像以前一样在文件有效负载之外提供其 Drive 文件 ID,并调用files().update()而不是files().create(),它也可以正常工作:

DRIVE_ID = 'YOUR_FILE_ID'. # existing file in Drive
DOCX_FILE = 'person.docx'  # Word file to replace the above file with
DOCS_MIME = 'application/vnd.google-apps.document'
    :
    : # credentials code as above
    :
DRIVE = discovery.build('drive', 'v3', ...) # same as above
body = {'name': DOCX_FILE, 'mimeType': DOCS_MIME}
res = DRIVE.files().update(fileId=DRIVE_ID, media_body=DOCX_FILE,
        body=body, fields='name,mimeType').execute()
print('Updated "%s" (as %s)' % (res['name'], res['mimeType']))

如果您不熟悉 Drive API,请继续阅读。要操作Drive中已有的文档,特别是面向文档的操作,您将使用 Google Docs、Sheets 和 Slides API,但要执行文件访问,例如导入/导出、复制、移动、重命名等。 ,请改用Google Drive API。如果您是 Drive API 的新手,除了上述之外,这里还有一些示例:

(*) - TL;DR:将纯文本文件上传到云端硬盘,导入/转换为 Google Docs 格式,然后将该 Doc 导出为 PDF。上面的帖子使用 Drive API v2;这篇后续帖子描述了将其迁移到 Drive API v3,这是一个结合了“穷人转换器”帖子的开发者视频。

要了解有关如何在 Python 中使用 Google API 的更多信息,请查看我的博客以及我制作的各种 Google 开发人员视频(系列 1系列 2)。

于 2020-10-10T19:57:16.577 回答