Google apps script 如何以编程方式删除其他用户拥有的触发器?

Google apps script 如何以编程方式删除其他用户拥有的触发器?,google-apps-script,triggers,permissions,Google Apps Script,Triggers,Permissions,我无法理解触发删除的集体用户权限 我知道可安装触发器只能由创建它们的用户删除,但中的措辞似乎推断可编程触发器(以实际代码编写)可以由其他用户删除/删除 如果是这样,为什么当我运行脚本从另一个用户的计算机上删除所有触发器时,它不会删除我从计算机上编程的触发器 另一个接近于解决这个问题,但似乎只讨论了可安装触发器(如果我没有弄错的话) /** *创建时间驱动触发器。 */ 函数createFirstTrigger(){ //每6小时触发一次。 ScriptApp.newTrigger('消息') .

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

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

如果是这样,为什么当我运行脚本从另一个用户的计算机上删除所有触发器时,它不会删除我从计算机上编程的触发器

另一个接近于解决这个问题,但似乎只讨论了可安装触发器(如果我没有弄错的话)

/**
*创建时间驱动触发器。
*/
函数createFirstTrigger(){
//每6小时触发一次。
ScriptApp.newTrigger('消息')
.基于时间的()
.每分钟(1)
.create();
}
函数deletingAllTriggers(){
//删除当前项目中的所有触发器。
var triggers=ScriptApp.getProjectTriggers();
对于(var i=0;i

我还尝试从其他人的计算机上删除触发器的原始代码,但触发器仍然有效。

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

出现问题的用户可以打开他们的

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

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

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

  • 从任何用户的公司设备中删除公司数据
  • 更改用户密码-记录新密码-您将需要它
  • 重置登录cookies
  • 撤消所有特定于应用程序的密码
  • 使用新密码登录前员工的帐户,并删除所有恢复电话和电子邮件地址
  • 将组织仍需要的文件的文件所有权转移给其他用户
  • 复制用户帐户中的所有数据-
  • 删除用户帐户-为没有人使用的帐户付费没有意义
如果您想在某个特定的日期/时间停止触发器的工作,那么您可以将日期硬编码到触发器代码中以删除自身。如果不想硬编码,可以将日期放入属性服务-脚本属性中,以便任何文件所有者都可以手动更改日期

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

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

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

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

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

如果带有触发器的文件已放入共享驱动器,则其他用户将有权访问该文件。但是,如果要使用附加组件,则当前无法在共享驱动器的文件中安装附加组件


Hmmm。。。那真是个倒霉蛋。那么,对于一个团队来说,管理触发器的最佳方式是什么?例如,如果某个触发器需要在某个时间被终止,但触发器创建者正在休假/退出/被解雇/等等,那么如何删除已创建的触发器?最好的解决方案是使用一个组帐户来安排触发器,以便所有有权访问该帐户的人都可以杀死触发器?
/**
 * 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]);
   }
}