作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试找出一种有效的方法来复制 Google 云端硬盘文件,以便该副本仅存在于用户的根文件夹中。
我知道当您创建新的 Google 云端硬盘文件时,默认情况下它位于根文件夹中:
>>> body = {"title": "Test Document", "mimeType": "application/vnd.google-apps.document"}
>>> document = drive_service.files().insert(body=body).execute()
>>> document["parents"]
[{u'id': u'...', u'isRoot': True, 'kind': u'drive#parentReference', ...}]
但是,当您复制 Google 云端硬盘文件时,默认情况下它位于与源相同的文件夹中。
一种可能是首先查询用户根文件夹的 ID 并将其传递到复制请求中:
>>> about = drive_service.about().get().execute()
>>> root_id = about["rootFolderId"]
>>> body = {"title": "My copy", "parents": [{"id": root_id}]}
>>> copied_document = drive_service.files().copy(fileId="SOMEID", body=body).execute()
但是,上述需要额外的查询并增加完成操作的总时间。
我正在寻找一种在不提前知道根文件夹 ID 的情况下执行此操作的方法。我尝试将空列表传递给“ parent ”,但这仍然会导致副本被放置在同一文件夹中:
>>> body = {"title": "My copy", "parents": []}
>>> copied_document = drive_service.files().copy(fileId="SOMEID", body=body).execute()
我还尝试传递根文件夹的“ stub ”,但这引发了错误:
>>> body = {"title": "My copy", "parents": [{"isRoot": True, "kind": "drive#parentReference"}]}
>>> copied_document = drive_service.files().copy(fileId="SOMEID", body=body).execute()
Traceback (most recent call last)
...
HttpError: <HttpError 404 when requesting https://www.googleapis.com/drive/v2/files/SOMEID/copy?alt=json returned "File not found:">
我还缺少其他方法吗?
(以上示例使用 Google API Python 客户端)
最佳答案
我似乎记得 root 的文件夹 ID 别名为“root”。尝试在第二种方法中将其作为 root id 传递。
关于python - 谷歌云端硬盘 SDK : How do you copy a file so the copy lives only in the root folder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26050964/
我是一名优秀的程序员,十分优秀!