【问题标题】:Remove a file that was previously added from Shared With Me to My Drive删除之前从与我共享到我的云端硬盘中添加的文件
【发布时间】:2015-03-16 18:17:53
【问题描述】:

Google 云端硬盘有一项很酷的功能:可以将与我共享的文件或文件夹添加到我的云端硬盘。

然后我可以以相同的方式从我的云端硬盘中删除此文件(请注意,如果我在网页版中删除共享文件,它不会进入垃圾箱)

但是,我在尝试使用 Google Drive API 删除此文件时收到 403 Forbidden 错误(因为我不是此文件的所有者,权限不足)。因此,可以看出,这不是一个简单的删除请求。如何实现此功能?

【问题讨论】:

  • 只是猜测。 “从我的云端硬盘中删除”不会删除文件,只是将我的云端硬盘作为父级删除。而在 Drive API 中,delete 确实会尝试擦除文件。尝试使用 Try It 或 clevernote.co/app/drivecrud.html 在从我的云端硬盘删除前后查看文件的元数据,看看发生了什么变化。

标签: google-drive-api


【解决方案1】:

添加到我的云端硬盘会更改相关项目的父集合。要更改这一点,您需要取消父项而不是删除。

使用 about.get 调用检索我的云端硬盘 ID,然后从文件/文件夹的文件资源中的父级列表中删除该 ID。使用新的父母列表更新文件。

【讨论】:

【解决方案2】:

一个迟到的答案,但我也遇到了这个问题。发生这种情况是因为该文件实际上并未被复制,它是同一个实例。如果您将其从“我的云端硬盘”中删除,它也会从“共享云端硬盘”中删除。而且您可能无权将其从共享云端硬盘中删除。

如果您只想将其从“我的云端硬盘”中删除:单击该文件。在右侧面板的详细信息下,有一个位置列表。那里至少列出了共享驱动器和我的驱动器。单击 X 将其从“我的云端硬盘”中删除,它会在那里消失,同时保留在共享云端硬盘上。

【讨论】:

    【解决方案3】:

    这是我发现的。删除与我共享的项目的父项后,执行sharedWithMe 搜索仍会返回该项目,即使该项目的父列表为空。

    代码如下:

    string sItemId = (this is the Id of the item shared with me);
    string sParentId = driveService.About.Get().Execute().RootFolderId;
    driveService.Parents.Delete(sItemId, sParentId).Execute();
    var parentList = m_driveService.Parents.List(sItemId).Execute();
    

    此时parentList.Items.Count0

    现在当我搜索 sharedWithMe 时,该项目在返回列表中。

    【讨论】:

    • 看起来 sharedWithMe 项目没有父项。所以亚历山大的问题还是没有答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多