【问题标题】:How to programmatically delete triggers owned by other users?如何以编程方式删除其他用户拥有的触发器?
【发布时间】:2019-12-03 20:03:26
【问题描述】:

我无法理解触发删除的集体用户权限。

我知道可安装触发器只能由创建它们的用户删除,但Google Scripts page 中的措辞似乎推断可编程触发器(用实际代码编写)可以被其他用户删除/删除。

如果是这样,为什么当我运行脚本以从其他用户的计算机中删除所有触发器时,它不会删除我编写的触发器从我的计算机 ?

另一个Stack Overflow page 即将解决这个问题,但似乎只谈论可安装的触发器(如果我没记错的话)。

/**
 * Creates a time-driven trigger.
 */
function createFirstTrigger() {
  // Trigger every 6 hours.
  ScriptApp.newTrigger('message')
      .timeBased()
      .everyMinutes(1)
      .create();
}

function deletingAllTriggers() {
   // Deletes all triggers in the current project.
   var triggers = ScriptApp.getProjectTriggers();
   for (var i = 0; i < triggers.length; i++) {
      ScriptApp.deleteTrigger(triggers[i]);
   }
}

我也尝试从另一个人的计算机中删除触发器的原始代码,但触发器仍然存在。

【问题讨论】:

    标签: google-apps-script triggers permissions


    【解决方案1】:

    用户不能删除彼此的触发器。

    有问题的用户可以打开他们的triggers page

    查看他们的所有触发器,并删除他们想要停止的所有触发器。

    该用户还可以进入其帐户的安全部分并查看授予第三方访问权限的权限。

    https://myaccount.google.com/security-checkup

    如果 GSuite 帐户的管理员需要访问用户文件,管理员应该做什么取决于该用户是否仍在组织中受雇。如果用户不再在组织中,则管理员必须:

    • 从任何用户公司设备中删除公司数据
    • 更改用户密码 - 记录新密码 - 您将需要它
    • 重置登录 cookie
    • 撤销所有应用程序专用密码
    • 使用新密码登录前员工的帐户并删除所有辅助电话和电子邮件地址
    • 将组织仍需要的文件的文件所有权转让给其他用户
    • 复制用户帐户中的所有数据 - https://takeout.google.com/settings/takeout
    • 删除用户帐户 - 为没有人使用的帐户付费是没有意义的

    如果您想阻止触发器在某个特定日期/时间工作,那么您可以将日期硬编码到触发器代码中以将其自身删除。如果你不想硬编码,你可以把日期放到属性服务-脚本属性中,这样任何文件所有者都可以手动更改日期。

    当触发器运行时,用户是否仍然可以访问文件或代码并不重要。无论文件所有者是否有权访问文件或其帐户,触发器都会运行,因此触发器可以自行删除。

    如果您还没有编写函数代码来删除运行它的已安装触发器,那么您需要有权访问用户帐户。如果该用户不可用,则需要有人登录他们的帐户。我并不是在提倡人们提供他们的密码以便其他人可以登录他们的帐户,我只是在说明需要做什么。

    GSuite 帐号的管理员可以重置用户密码,然后使用新密码登录该帐号。

    如果需要删除触发器的帐户是免费/消费者帐户,则无法访问该用户帐户。

    如果创建触发器的代码在插件中,则可以编写插件代码来检查用户是否触发并删除它。这是假设插件已经被授权创建和删除触发器。对于 GSuite 帐户内的插件,插件所有者可以编写代码并在公司内发布插件,而无需 Google 审核代码。

    如果带有触发器的文件已放入共享云端硬盘,则其他用户将有权访问该文件。但是,如果您想使用插件,则目前无法将插件安装在共享驱动器中的文件中。

    Documentation for Google Shared Drive

    【讨论】:

    • 嗯......这真是太糟糕了。那么,管理团队触发器的最佳方法是什么?例如,如果需要在某个时间杀死触发器,但触发器创建者正在休假/退出/下岗/等,那么如何删除已创建的触发器?最好的解决方案是拥有一个安排触发器的组帐户,以便所有有权访问该帐户的人都可以终止触发器?
    猜你喜欢
    • 2018-08-12
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2014-04-22
    相关资源
    最近更新 更多