【问题标题】:Is there a way to assign a trigger ownership from Google App Script?有没有办法从 Google App Script 分配触发器所有权?
【发布时间】:2020-10-22 19:09:58
【问题描述】:

我在云端硬盘中遇到了关于表单的触发器和权限问题:

  • 表单有一个共享文件夹
  • 所有这些表格都是我的财产(我是所有者)
  • Everyday,其他具有编辑权限的用户,复制其中一个 到另一个共享文件夹。
  • “其他用户”是该副本的新所有者
  • 该副本有一个脚本(如原始表单),当您打开时, 它执行 2 个操作:
  • Change the owner of the Form to me
    
  • Set up a trigger to delete the Form
    

问题是,在创建触发器的那一刻,脚本没有注意到所有者在执行期间发生了变化。所以,我最终拥有该文件,但不允许脚本在时机成熟时删除该文件,因为我不是该触发器的“作者”或所有者。

有没有办法解决这个问题?

【问题讨论】:

  • 也许解决方案是最简单的方法:保持表单的所有者不变,这样,在触发触发器的那一刻,触发器的所有者和表单的所有者, 是同一个用户
  • 触发器归拥有创建它的项目的用户所有。
  • 我就是这么想的。但是我遇到了一个触发器归创建的用户所有。我今天刚做了一个测试。

标签: google-apps-script triggers google-forms


【解决方案1】:

可安装的触发器始终代表创建它的人运行 - 即通过使用其帐户登录来授权触发器的人

如果您的设置是这样的,用户需要删除您拥有的表单,他需要代表您执行此操作。

可能的配置:

1.在企业代码中调用Web App

  • 如果您将 WebApp 部署为 Execute the app as: MeWho has access to the app:Anyone within [your domain] - 那么通过其部署 URL 调用 WebApp 的每个人都可以代表您执行它(您也可以通过将参数作为查询字符串添加到网址)

2。使用service accountimpersonation

  • 这将确保脚本始终代表模拟用户(可以是您!)运行,无论谁运行代码
  • sample

【讨论】:

  • 谢谢ziganotschka!伟大的想法。我忘了描述一种可以发现麻烦的情况......如果表单是由我以外的其他人创建的,那么Web应用程序的想法就无法做到,我永远不知道谁将成为所有者下次。我这么说是因为,如果有人创建了表单,并且最终我更新了它,那么在我的权限下创建了一个触发器来删除表单。但是,表格不是我自己的。所以......你可以在那里看到问题。都搞砸了
  • 在这种情况下,您仍然可以使用服务帐户 - 这也允许将表单的所有权转让给您。
猜你喜欢
  • 2012-03-02
  • 2021-07-28
  • 2023-03-03
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
相关资源
最近更新 更多