【问题标题】:Copy file into a specific parent folder with Google Drive API?使用 Google Drive API 将文件复制到特定的父文件夹中?
【发布时间】:2014-01-28 19:54:26
【问题描述】:

我正在使用 Python 2.7 和 service account 根据标题将 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,因为这是在其他地方使用的。但是,在客户端库中设置这个数组并不会产生效果:没有错误并且文件肯定不在正确的文件夹中。

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

有没有人运气好with this?我还缺少什么吗?

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

【问题讨论】:

    标签: python google-drive-api google-drive-realtime-api


    【解决方案1】:

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

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

    如果/当我弄清楚如何设置权限时,我会更新这个。

    这里有个奇怪的提示是文件仍然被复制到驱动器根目录以及我指定的父文件夹。

    【讨论】:

    • +1 好收获!这只是让我摆脱了一些麻烦:)
    • 如果有子文件夹,我该怎么办?
    • 在 Google Drive V3 API 中的“parents”是一个文件夹 ID 数组作为纯字符串。 “title”参数也变为“name”。这将教我复制和粘贴 SO 发布的代码。
    • {'name': new_title, 'parents' : [ target_folder_id ]}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多