gpt4 book ai didi

javascript - 如何获取所有表单触发器(不仅仅是当前脚本)?

转载 作者:行者123 更新时间:2023-12-01 22:51:31 24 4
gpt4 key购买 nike

我做了以下事情:

  1. 创建了一个 Google 表单(例如表单 ID = ABC)
  2. 创建了一个 Google 表格(我们称之为 sheet1)

在 sheet1 的脚本编辑器中,使用如下代码向我的表单安装触发器:

var form = FormApp.openById("ABC");
ScriptApp.newTrigger("testFunctionSheet1").forForm(form).onFormSubmit().create();

当我调用以下命令时,我看到我的触发器已正确安装:

ScriptApp.getUserTriggers(form);

一切都很好。每当提交 Google 表单时,我都可以执行代码。

问题是,稍后我继续创建一个新的 Google 表格(我们称之为 sheet2),它具有类似的代码:

ScriptApp.newTrigger("testFunctionSheet2").forForm(form).onFormSubmit().create();

不过,为了安全起见,我尝试从我所有的旧脚本(即 sheet1)中删除所有以前的触发器。但是,当我运行时:

ScriptApp.getUserTriggers(form);

...它返回一个结果 (testFunctionSheet2),而不是同时返回 testFunctionSheet1testFunctionSheet2。原来它只返回由当前脚本执行的触发器!

这是有问题的,因为这可能意味着我不小心有很多脚本都在提交表单时执行。如果我从来没有写下哪些脚本针对哪些表单执行,我将不知道每次提交到底运行了什么。其中一些脚本可能做同样的事情(最好的情况是浪费 CPU 周期,最坏的情况下会相互干扰),或者它们可能做完全不同的事情并可能相互冲突。

我想要一种简单的方法来查找将在提交表单时执行的所有 脚本触发器。就像函数的行为是否真的如我所料......

ScriptApp.getUserTriggers(form) 应该返回如下内容:

  • sheet1: testFunctionSheet1
  • sheet2: testFunctionSheet2

通过这种方式,我可以轻松判断在提交表单时将执行哪些脚本,并且可以手动删除旧脚本,以确保不会发生冲突。

有没有办法找出在提交表单时哪些触发器将在我的所有脚本中执行?


更新:getUserTriggers() 的文档阐明它永远不会为不同的脚本返回触发器:

Gets all installable triggers owned by this user in the given form, for this script or add-on only. This method cannot be used to see the triggers attached to other scripts.

那么,我如何知道与给定 Google 表单关联的所有触发器?注意:这不一定是编程解决方案。如果 Forms 中有一个 UI 元素可以为我提供这些信息,那也足够了。

最佳答案

似乎没有办法做到这一点,但有一些变通办法可以使事情更有条理:

  1. 与其将表单触发器安装在工作表上,不如将其安装在表单上。如果您养成这种习惯,您可以很容易地判断是否安装了脚本,因为您首先要检查的是表单的脚本。只需像上面那样运行 get all tr​​iggers 命令,它就会起作用。

  2. 不是在表单上安装表单触发器,而是将表单设置为将其响应提交给工作表,并使用 SpreadsheetTriggerBuilder 中的 onFormSubmit() 方法。 .要找出与表单相关联的触发器变得非常简单,只需打开表单,然后转到其目的地,然后查看该脚本是否具有该表单的触发器。

  3. 在您不打算向用户显示的表单的某些属性中隐藏触发器脚本名称(例如 customClosedFormMessage )。将其设置为类似 This script has an active trigger associated with sheet1. 您可以创建一个辅助函数,在安装触发器之前确保该文本不存在(如果您想限制例如,每个表单 1 个触发器)。

关于javascript - 如何获取所有表单触发器(不仅仅是当前脚本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896873/

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