按下单元格中的按钮时从 Google 表格触发 webhook

Posted

技术标签:

【中文标题】按下单元格中的按钮时从 Google 表格触发 webhook【英文标题】:Trigger webhook from Google Sheets when button in cell pressed 【发布时间】:2020-04-10 19:58:56 【问题描述】:

我们在 Google 表格中进行了冲刺容量规划,因为 JIRA 无法根据每个任务的故事点数有效地将任务分解为冲刺。

我们引入了 JIRA 中所有任务及其相关故事点的列表,并通过一些电子表格魔法根据可用故事点的数量构建冲刺。

每次在特定板上的 JIRA 中进行编辑时,电子表格都会通过 Zapier 更新,但有时当很多事情发生变化时,它会触发大量事件,因为在扎皮尔扎普。

我想知道是否有可能在 Google 表格单元格中设置一个可以触发 webhook 的按钮,或者像可以触发 Zap 更新电子表格的日期/时间这样微不足道的东西?

这意味着它在 Zapier 中的任务上不太“昂贵”,并且仅在用户单击电子表格中的按钮时才会更新。

【问题讨论】:

您是否在问如何在 Zapier 或 Google 表格中让事情变得更快?最好发布一个具体的简化示例来说明您的单一和具体问题(带有链接) 两者都不是更快,只是将 webhook 从 JIRA 中的触发器移动到由 Google 表格中的按钮驱动的触发器。考虑一个在单元格中带有按钮的 Google 脚本。 【参考方案1】:

您好 tectomics,我相信我已经找到了适合您的解决方案。

高层次的解决方案如下:

在您的 Google 表格中创建一个脚本,该脚本由按下按钮触发。该脚本向正在侦听任何传入流量的 Zapier webhook 发出 HTTP POST 请求。一旦 webhook 被 Zapier 捕获,它就会触发位于 zap 中的所有下游步骤。请注意,要使其正常工作,您需要高级订阅 Zapier,因为 Zapier 的 webhook 应用程序仅限高级访问。

现在详细介绍:

google脚本如下:

function fireZap() 

  var endpoint = "ZAPIER_WEBHOOK_URL";

  var payload = 
    "uuid" : Utilities.getUuid()
  ;

  var options = 
    "method" : "post",
    "payload" : payload
  ;

  UrlFetchApp.fetch(endpoint, options)


注意:端点变量只是一个示例,您必须在首次创建 webhook 触发器时使用 Zapier 提供的端点 URL 更新该值。

google 脚本使用 UrlFetchApp 类。 Zapier 的 webhook 端点似乎只触发唯一的有效负载数据(至少在测试模式下,对于实时 zap 可能不同),因此我们为有效负载生成一个唯一的 UUID。

编写脚本后,您必须将其链接到工作簿中的按钮。有很多教程,例如 this 一个描述了这样做的直接过程,所以我会省去麻烦。

完成所有这些后,我们将前往 Zapier 并使用 Webhooks zap 创建一个新的 zap 作为触发器。对于触发事件,选择“Catch Hook”。继续“自定义挂钩”部分。在这里,Zapier 将为您提供一个唯一的 URL 端点,将其放在端点变量中,回到谷歌脚本中。

有了这个完整的设置,无论您想要什么下游 zaps,只要您点击位于工作表上的按钮,它就会触发。

希望对你有帮助,

有任何问题请告诉我。

【讨论】:

澄清一下,live hook zaps 不会进行任何重复数据删除。在这种情况下,有效载荷可能每次都是id: 1,它仍然可以按预期工作。这在测试中可能还不清楚,但是当 zap 开启时就是这种情况。

以上是关于按下单元格中的按钮时从 Google 表格触发 webhook的主要内容,如果未能解决你的问题,请参考以下文章

如何使表格视图单元格中的按钮工作[重复]

Google 表格的静态 TIMESTAMP

swift 3 在tableView 中按下了哪个单元格按钮

按下按钮时在 UITableView 单元格中清除 UITextField 的文本

将表格视图单元格中的数据保存在核心数据中

移动到表格单元格中的下一个文本字段