gpt4 book ai didi

performance - 使用 Google Drive API 转移所有用户文件所有权的最有效流程

转载 作者:行者123 更新时间:2023-12-04 18:02:39 26 4
gpt4 key购买 nike

我编写了一个使用 Domain-Wide Delegation of Authority 的 Google Apps 脚本函数(Oauth 2 服务帐户),以及 Google Drive API将用户(用户 A)拥有的所有 Google 云端硬盘文件的所有权转让给另一个用户(用户 B),然后添加第三个用户(用户 C)作为所有文件的编辑者。

我这样做的原因是因为我希望在员工离开公司时自动执行保存文件的过程,并为将处理其职责的任何人提供访问权限。

  • 用户A 是离开公司的人,
  • 用户B 是一个专门用于存档的 Google 帐户
    离职人员的文件,
  • 用户 C 是负责接管用户 A 的人
    责任。

  • Google 提供了一个 Transfer Ownership tool适用于应用程序管理员,但不能通过脚本作为自动化流程的一部分调用,只能通过管理控制台 GUI 调用。

    我已经能够使用 API 成功执行此过程的每个步骤,但每个文件需要多次 API 调用。因此,如果用户在其 Drive 中拥有数百或数千个文件,则该功能可能会超过 5 分钟的脚本执行限制。

    有没有办法组合或删除这些步骤中的任何一个并仍然实现相同的目标?

    这是我想出的过程:
  • 以用户 A 身份进行身份验证
  • 使用 Files: list , 列出用户 A 拥有且不在回收站中的所有云端硬盘文件
  • 循环遍历每一页结果并将文件详细信息(id、标题、父项等)存储在一个数组中
  • 使用 Files: insert ,出于组织目的,创建一个根级“容器”文件夹,该文件夹最终将包含用户 A 的所有文件和文件夹(称为“来自用户 A(日期)”
  • 循环遍历文件详细信息数组中的每个文件。如果文件的父文件是其驱动器的根目录,请将父文件设置为容器文件夹(使用 Files: patch)。这会将他们拥有的所有文件移动到容器文件夹中,但会保持子文件夹/文件的目录结构完整无缺。
  • 使用 Permissions: insert , 将用户 B 设置为容器文件夹的所有者。这使得容器文件夹出现在用户 B 的驱动器的根目录中。但是,这不会将所有者权限级联到容器文件夹中包含的所有文件/文件夹。
  • 使用 Permissions: insert , 将用户 C 设置为容器文件夹的编辑器,以便该文件夹显示在其“与我共享”文件夹中。
  • 再次循环遍历文件详细信息数组中的每个文件,然后:
  • 使用 Permissions: insert , 将用户 B 设置为每个文件的所有者
  • 使用 Permissions: insert , 将用户 C 设置为编辑器(使用 sendNotificationEmails=false 参数,这样用户 C 就不会被成千上万的通知电子邮件淹没)
  • 以用户 B 身份进行身份验证,再次遍历文件详细信息数组中的每个文件,然后:
  • 步骤 8-1 使每个文件也显示在用户 B 的驱动器的根目录中(当您单击每个文件时,它会显示两个父文件夹:容器文件夹和我的驱动器根文件夹),因此现在删除每个文件的父数组中的根文件夹(使用 Files: patch )
  • 使用 Permissions: delete , 从文件中删除用户 A 的权限(因为他们的帐户将被设置为“Vault 前雇员”,这会导致他们仍然显示在 Google 云端硬盘共享 Pane 中,但他们不应该因为他们不再在公司工作) .
  • 最佳答案

    Google 刚刚发布了一个 Data Transfer API这完成了大部分工作。它不处理与用户 C 相关的部分,但它删除了大部分运行时间最长的步骤。

    关于performance - 使用 Google Drive API 转移所有用户文件所有权的最有效流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344681/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com