使用 Google Drive API 将文件复制到特定的父文件夹中?

问题描述 投票:0回答:1

我正在使用 Python 2.7 和一个 服务帐户 根据其标题将 Google Drive 中的文件复制到另一个文件夹中。这需要我执行五 (5!) 个命令:

  1. 按标题查找文件 ID。 (
    files().list
    )
  2. 按标题查找父文件夹 ID (
    files().list
    )
  3. 复制文件(
    files().copy
    )
  4. 将所有权转移到真实账户 (
    files().insert
    )
  5. 移至父文件夹。 (
    parents().insert
    )

这一切都有效,但我想减少调用次数,首先这意味着缓存 ID,这样我就不必调用

files().list
。我想做的下一件事,特别是我在解决这个问题时,是如何在 files().copy 命令中设置父文件夹
within
。该文档有一个可选的
parents
参数,描述如下:

包含此文件的父文件夹的集合。设置此字段会将文件放入所有提供的文件夹中。插入时,如果未提供文件夹,文件将放置在默认根文件夹中。

虽然它没有说,但我知道这意味着父ID's,因为这是其他地方使用的。但是,在客户端库中设置此数组不会产生效果:没有错误,并且文件肯定不在正确的文件夹中。

newfile = {'title': newtitle, 'parents' : [ parentFolderId ]}
service.files().copy(fileId=originalId, body=newfile).execute()

有人有幸有这个吗?我还有什么遗漏的吗?

奖励:在复制命令中转移所有权?也许我的服务帐户可以冒充我?

python google-drive-api google-drive-realtime-api
1个回答
12
投票

啊哈!

parents
数组是带有
id
字段的对象列表:

newfile = {'name': newtitle, 'parents' : [ { "id" : parentFolderId } ]}
service.files().copy(fileId=originalId, body=newfile).execute()

如果/当我弄清楚如何设置权限时,我会更新此内容。

这里有一个奇怪的注意事项是,该文件仍然被复制到驱动器根目录以及我指定的父文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.