使用 URL 链接修改 Asana 任务

Using URL Links to Modify Asana Tasks

我们正在使用只读的 Asana“项目”来管理我们的设计工作。我们的设计工作被组织为体式任务。每个任务代表一个不同的设计项目。将其设置为只读的原因是为了防止 Asana 用户意外更改项目详细信息,并限制 Asana 用户创建自己的任务,这些任务不属于我们已确定的任务标准结构。

为了在 Asana 中创建这些任务,我们结合使用 Cognito 表单和 Zapier 来自动创建任务。我们的客户填写了 Cognito 表单,Zapier 会自动为 Asana 填充需要为该特定客户完成的设计任务。

此设置的问题在于,要在 Asana 中四处移动任务以向团队提供“更新”,具有写入权限的 Asana 用户需要执行此操作,或者 Asana 用户需要填写表格进行更改,因为他们只有读取权限。我们宁愿让它超级简单,我已经找到了一种使用 Zapier webhooks 来实现它的方法。

因为我们使用的是 Zapier,所以我可以按照我想要的任何方式格式化 URL links。我可以创建一个 URL link,其中包含 Asana 任务 ID 和任务需要移动到的 Asana 部分。使用 webhook,用户可以单击“更改部分”URL。单击此 URL 将触发 Zapier Zap 操作,然后将更改 Asana 任务部分。只需单击 link,用户就可以对该任务进行更新。

我的问题很基础。有没有办法阻止 URL 打开页面,但 URL 中的数据仍然传递给 Zapier?当用户单击 link 时,它会打开一个网页,我不希望这种情况发生。或者如果发生这种情况,网页是否可以在打开后立即关闭?

简短的回答是“不,不可能点击 zapier link 并且页面无法打开或 auto-close”开箱即用。


长答案有点复杂。我假设您的 url 看起来像 https://hooks.zapier.com/hooks/catch/1234/abcd?name=john&cool=true,允许您将“name”和“cool”传递到 Zapier。

要将其传递到 Zapier,您需要获取 URL 的内容,方法是将其加载到网络浏览器中或使用其他工具(例如 fetchcurl).

如果您有一些工程资源,您可以在某个地方托管一个非常简单的 HTML 页面,该页面可以接受数据和 运行 一些 Javascript。它会做类似的事情:

  1. 从查询字符串中读取 Zapier webhook url(可能值得编码)
  2. 页面加载时,运行 await fetch(thatUrl)
  3. 指示用户关闭页面(这比从 Zapier 获得的 JSON 或黑色响应更好的用户体验)。我以为 JS 可以关闭任何页面,但事实证明 window.close() 只有在脚本打开页面 (docs) 时才有效。

所以这是一个不错的解决方法。