文档列表API回归:更新文档(带转换)会丢失图像

时间:2012-10-05 06:20:42

标签: google-drive-api google-docs-api

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

重现步骤

  1. 我有一个.docx文件,里面有几行文字和一张图片。

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

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

  4. 其他信息

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

    这必须在过去24小时左右打破...我有一个现有的应用程序工作正常,现在它更新的所有文件都缺少图像。是否在后端更新了导致其中断的内容?

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

    请,帮助......这已经完全破了一个星期了。我想知道这是否是谷歌工程师所知道的问题以及是否有人正在研究它。

1 个答案:

答案 0 :(得分:0)

(2020年10月):是2020年,这个问题确实过时了。 Google Documents List API分别为deprecated in 2012shutdown in 2015,由Google Drive API取代。

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

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所提到的,创建文件与以前一样完美。如果您编辑现有文档,则除了像以前一样提供文件有效负载之外,还需要提供其云端硬盘文件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的新手,请继续阅读。要处理驱动器中已经 的文档,特别是面向面向文档的操作,可以使用Google Docs,Sheets和Slides API,但要执行 file 访问权限(例如导入/导出,复制,移动,重命名等),请改用Google Drive API。如果您是Drive API的新手,那么除了上面的示例之外,还有一些示例:

(*)-TL; DR:将纯文本文件上传到云端硬盘,导入/转换为Google文档格式,然后将该文档导出为PDF。以上发布内容使用Drive API v2; this follow-up post描述了将其迁移到Drive API v3的过程,这里是developer video结合了两个“穷人的转换器”帖子。

要了解有关一般如何将Google API与Python结合使用的更多信息,请查看我制作的my blog以及各种Google开发人员视频(series 1series 2