Google drive api 文档列表API回归:更新文档(使用转换)会丢失图像

Google drive api 文档列表API回归:更新文档(使用转换)会丢失图像,google-drive-api,google-docs-api,Google Drive Api,Google Docs Api,在使用文档列表API时,Google文档转换最近似乎出现了一些问题。对现有文档条目所做的更新将无法正确转换为Google Docs格式,文档中的图像也不会显示 复制步骤 我有一个.docx文件,它有几行文本和一个图像 使用documents list API,我将文件作为新的条目上传(打开转换),它工作正常。我可以在谷歌文档中打开转换后的文档,它看起来很好 接下来,使用像API这样的文档,我再次将文件作为UPDATE上传到原始条目(打开转换)。现在,当我在谷歌文档中打开转换后的文档时,图像丢失了

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

复制步骤
  • 我有一个
    .docx
    文件,它有几行文本和一个图像

  • 使用documents list API,我将文件作为
    新的
    条目上传(打开转换),它工作正常。我可以在谷歌文档中打开转换后的文档,它看起来很好

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

  • 附加信息 因此,只有当更新现有的条目时,问题才会发生。作为全新条目上载的文件没有此问题

    这一定是在过去的24小时内坏掉的……我有一个运行良好的现有应用程序,现在它更新的所有文档的图像都丢失了。后端是否更新了导致此中断的内容

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

    求求你,帮帮我…这已经完全打破一个星期了。我只是想知道谷歌的工程师们是否意识到了这个问题,是否有人在调查这个问题。

    (2020年10月):现在是2020年,这个问题真的过时了。谷歌是和,取而代之的是

    驱动器API能够导入(上传和转换)Word文件,无论是创建还是更新图像到谷歌文档格式,都不会出现问题。下面是两种情况下的一些伪代码(Python)。第一个上传一个名为
    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']))
    
    如果您不熟悉驱动器API,请继续阅读。对于操作驱动器中已经存在的文档,特别是面向文档的操作,您可以使用Google Docs、Sheets和Slides API,但要执行文件级访问,如导入/导出、复制、移动、重命名等,请改用。如果您是驱动器API的新手,除上述示例外,下面还有一些示例:

    • 和代码深入——如果您不熟悉上面提到的身份验证代码,那么这很有用
    • 加上“穷人的纯文本到PDF转换器”代码深潜(*)
    • 仅将Google工作表导出为CSV博客
    (*)-TL;DR:将纯文本文件上传到硬盘,导入/转换为Google文档格式,然后将该文档导出为PDF。以上帖子使用驱动API v2;描述了如何将其迁移到驱动API v3,下面是一篇结合了“穷人的转换器”两篇文章的文章


    要了解如何将Google API与Python结合使用的更多信息,请查看我制作的各种Google开发者视频(和)。

    我设法重现了这个问题,并提交了一个内部错误。一旦我有了调查的结果,我就会更新这个帖子。有什么进展吗?使用最新的驱动器SDK和上载其他文件格式时也会出现此问题。(我看到的是.odt文件。)