【问题标题】:Upload updated a file on Google Drive with Python using Drive API V3 does not work使用 Drive API V3 使用 Python 在 Google Drive 上上传更新的文件不起作用
【发布时间】:2020-08-01 15:26:21
【问题描述】:

我不会在此处发布此内容,但我现在花了几个小时来了解为什么我的 Python 脚本的最后一部分没有像我预期的那样运行,因为阅读文档和有关此主题的许多其他帖子。

我想要达到的目标。

  • 在 Google Cloud Platform 中创建项目并启用 Drive API - 工作
  • 为 Drive API 创建 OAuth 凭据 - 有效
  • 通过 Python 脚本使用 Google Drive 进行身份验证 - 有效
  • 下载我想用 Python 脚本编辑的文件 - 工作
  • 使用 Python 脚本编辑后上传修改后的文件 - 不起作用

我正在使用谷歌官方文档中的这个函数:https://developers.google.com/drive/api/v2/reference/files/update

但它给出了以下错误:

    raise TypeError('Got an unexpected keyword argument "%s"' % name)
TypeError: Got an unexpected keyword argument "newRevision"

当我从函数调用中删除它时,我得到了这个:

发生错误: https://www.googleapis.com/upload/drive/v3/files/1T1dl_Z3z-FDLa7lbWib8XxgbTd5pMpIP?alt=json&uploadType=resumable返回“资源体包含不可直接写入的字段。”>

我不明白为什么会这样。

为什么官方示例中包含不支持的参数? 我是否有可能在本地使用不同版本的 Google Python 库,然后他们希望我拥有?我刚刚又按照官方文档了? 是不是我没有足够的权限来更新文件?

谢谢, 安德烈

【问题讨论】:

  • 请编辑您的问题并包含您的代码,如果我们看不到它,我们无法帮助您调试它。
  • 你能分享请求正文吗?无论如何,查看您遇到的错误,您正在尝试更新无法更新的属性(并非 File 资源中的所有属性都是可写的)。如果您提供请求正文,我可以提供更多详细信息。

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


【解决方案1】:

同时我自己也弄清楚了为什么它不起作用。

如果您遵循 Python Google Drive Quick Onboarding,您将使用其 API 的第 3 版:https://developers.google.com/drive/api/v3/quickstart/python

这一行定义了版本:

service = build('drive', 'v3', credentials=creds)

如果您继续在他们的文档中搜索更新文件的功能,我最终会在版本 2 文档和 sn-ps 中找到:

https://developers.google.com/drive/api/v2/reference/files/update

在这里寻找版本 3 sn-p,他们的文档中没有:https://developers.google.com/drive/api/v3/reference/files/update

所以我认为他们发布的版本 2 仍然有效,但事实并非如此。

我现在在第 2 版中做了所有事情,它终于可以工作了。

编辑添加参考:

newRevision 在 v2 中是一个有效参数,但在 v3 中不是,所以我假设在 v3 中,blob 上传总是会创建一个新修订版(如果未设置此参数,则在 v2 中会发生这种情况 - 默认为 @987654327 @)。见Parameter differences between v2 and v3:

+--------------+--------------+--------------+
|    Method    | v2 Parameter | v3 Parameter |
+--------------+--------------+--------------+
| files.update | newRevision  |      n/a     |
+--------------+--------------+--------------+

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多