【问题标题】:Untriggerable Triggers for Forms Google App Script表单 Google App 脚本的不可触发触发器
【发布时间】:2020-03-27 18:19:54
【问题描述】:

我一直在尝试让 Apps 脚本在提交 Google 表单后执行操作。

我的问题是,触发器只有在以下情况下才起作用

  1. Apps 脚本绑定到 Google 表单
  2. 触发器是在绑定到的 Google 表单上创建的

这并不是说触发器不是在其他场景中创建的。他们只是不开火。

我正在尝试做的是让一个独立的应用脚本在任何表单上创建一个触发器。这是通过运行 Run > Test as addon 并选择我喜欢的任何形式来完成的。我有一个菜单,可以打开一个对话框,其中包含我的按钮,该按钮运行 google.script.run.withSuccessHandler(function(data) { }).makeTrigger();

当我在 script.google.com 打开我的仪表板并查看我的触发器时,它确实为我使用 Test as addon 打开的任何表单创建它们。它们使用“从表单 - 表单提交”事件正确设置,当我打开菜单到“打开触发容器”时,它会转到正确的表单。但是当我打开表单并做出响应时,它们实际上从未被触发(我的触发器中的“上次执行”列保持为空,并且我的端点没有收到任何帖子。)

只有在满足上述 2 个条件的情况下才会在提交时触发它们(我将我的应用程序脚本重新制作为绑定版本来测试这一点。)如果我在除它之外的任何其他表单上使用它,我的绑定版本也不起作用绑定到 -- 它做同样的事情,制作不可触发的触发器。

代码.gs

function formIsSubmitted(e) {
  UrlFetchApp.fetch("https://test.free.beeceptor.com", {
    'method': 'post',
    'payload': 'from apps script'
  });
}

function makeTrigger() {
  var form = FormApp.getActiveForm();
  ScriptApp.newTrigger('formIsSubmitted')
    .forForm(form)
    .onFormSubmit()
    .create();
}

我已将我的插件在市场上不公开发布(等待审核。)这会解决问题,还是我遗漏了什么?

【问题讨论】:

  • 有两个 onFormSubmit 触发器。一个附加到表格,一个附加到链接的电子表格。阅读本节:developers.google.com/apps-script/guides/triggers/events
  • @Cooper 我没有在这些表格中附加任何电子表格。这仍然是我的问题吗?如何将触发器创建功能更改为用于表单提交?我在文档中看不到任何代码示例。

标签: google-apps-script


【解决方案1】:

在这种情况下,您需要使用附加到表单本身的 onFormSubmit 触发器。 为此,请务必使用.forForm(key) 签名方法从独立脚本附加触发器。 从自定义对话框中获取表单键后,您应该在 makeTrigger() 函数中使用它们:

function makeTrigger(keys) {
  keys.map(key => {
    ScriptApp.newTrigger('formIsSubmitted')
      .forForm(key)
      .onFormSubmit()
      .create();
  });
}

function formIsSubmitted(e) {
  UrlFetchApp.fetch("https://test.free.beeceptor.com", {
    'method': 'post',
    'payload': 'from apps script'
  });
}

参考资料:

Installable Triggers

【讨论】:

  • 从客户端对话框获取表单密钥的功能是什么?
  • 您好 Ayub,我假设在您的 javascript 环境(在本例中为对话框)中,您正在调用:google.script.run.withSuccessHandler(function(data) {}).makeTrigger(keys); 其中keys 是您在自定义菜单中填写的数组使用您选择的表单的 ID。
猜你喜欢
  • 2018-03-20
  • 2016-12-08
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多