Trello + Google表格:卡上的动态值

Trello + Google表格:卡上的动态值

注意:使用此方法,您不仅限于像我的脚本一样对自定义字段进行读写。 您可以使用Trello API提供的任何数据,但必须修改代码以适合您的需求。

我最近为与朋友一起玩的D&D派对创建了一个新角色。 他叫Horhand,他有很多巧妙的技巧和能力供我使用。 所有这些功能的描述都不适用于字符表,因此我决定创建一个Trello板来收集游戏中可能需要的所有信息。

我启用了“自定义字段”加电功能,以便能够将诸如Damage: 4d6类的值附加到卡上,并在卡的正面看到它。 但是有一个问题。 一个能力可能造成的伤害可能取决于角色的等级。 每次Horhand升级时,我都必须检查每张卡并检查是否应该更新任何值。

听起来这里有些东西可以自动化

由于我已经通过“自定义字段”达到了加电限制,因此如果不升级我的帐户,就无法添加任何类似Butler的自动化加电功能。 幸运的是,Trello提供了webhooks API。 每当您的面板发生变化时,Webhooks都会向用户定义的URL发送HTTP请求。 这些请求可以路由到链接到电子表格的Google Apps脚本。 该电子表格将使用Trello中的更新值,做一些电子表格魔术,然后通过使用Trello API用新值更新Trello卡。

霍汉德拥有一种名为“ 炼金术之火”的技能,根据他的等级造成伤害,并且需要8点检定 +熟练度加成(也取决于等级)+智力修正值。 Trello中的卡片如下所示:

请注意,该脚本当前不支持下拉列表/列表自定义字段,因此将忽略它​​们。

重要提示:Trello从技术上允许您创建共享一个名称的多个“自定义字段”,但是此脚本假定每个字段的名称都是唯一的。 如果您打破此假设,可能会出现问题。

在Google Spreadsheet中,有一个我需要从Trello导入的所有值的列表,以及一个将被导出回的值的列表,以及用于计算它们的公式。
这些列表使用Card Name@Custom Field Name格式。

一个重要的细节是,这些列表的左列被分配给名为TrelloInput和TrelloOutput的命名范围。 该脚本将在这些范围内进行迭代,以将Trello卡与电子表格中的单元格进行匹配。

您可以同时输入和输出字段,但请注意不要形成周期性依赖关系,这会导致无限循环的更新。

我在每个范围的末尾都留了一个空白单元格,以便能够通过“ Insert row快速添加新值,而无需手动扩展“命名范围”。

电子表格中还包含用于根据角色的等级和智力修改器确定熟练度修改器和炼金术伤害的表格。 这些表在“输出”单元格中引用。

让我们继续执行脚本。

我在这里不解释脚本的内部工作原理。 如果您对此感兴趣,请查看代码-它带有注释! 让我们完成设置过程。

  • 在电子表格编辑器菜单中,选择Tools > Script editor
  • 随意命名项目,然后从此处复制粘贴源代码。
  • 转到此页面,获取Trello API密钥并生成令牌。 将它们作为trello_keytrello_token变量的值粘贴到代码中。
  • 转到Trello面板,但将.json附加到URL。 这是您的电路板的数据模型。 抓住板子的ID(将在开头),并将其分配给脚本中的trello_board_id变量。
  • 在脚本编辑器中,从菜单中选择Publish > Deploy as web app... 在“ Execute the app as:字段中,选择“ Me
  • 由于Webhooks是从Trello服务器发送的,并且不使用任何Google帐户,因此在“ Who has access to the app:我们希望选择“ Anyone, even anonymous 。 但是,那时我们将面临Webhook注册的问题。
  • 当您要求Trello注册一个Webhook时,它将向所提供的URL发送一个HTTP HEAD请求,并期望一个HTTP 200响应。 但是由于某种原因,将该字段设置为“ Anyone, even anonymous ,Google都会使用HTTP 403响应此类请求。 如此处建议的那样,解决方法是先将访问选项设置为“ Anyone ,以仅注册一个Webhook,因为这将返回HTTP 200响应。 现在做。
  • Deploy以启动您的应用程序。 Google会要求您授权并警告您该应用未经验证。 它看起来很吓人,但由于它是您自己的应用程序,因此您可以勇敢地单击“ Advanced ,然后单击链接以继续进行授权(该代码不会将您的任何数据发送到Trello面板,而是发送到任何地方)。
    注意:首次发布应用程序后,如果对代码进行了任何更改(例如,编辑配置变量上的值),则必须通过“ Deploy as web app... 程序 Deploy as web app... 窗口 来更新应用 Deploy as web app... 重要的是要 在更新时 始终选择“ New 项目版本”,否则应用程序将继续使用旧代码!
  • 要注册Webhook,只需在脚本中运行register功能。 您只需要执行一次。 从功能列表中选择它,然后按运行。 如果一切正常,它将在没有任何错误消息的情况下运行。
  • 现在,返回到“ Publish > Deploy as web app... ,并将最后一个字段更改为“ Anyone, even anonymous 。 按Update以应用更改。 现在,webhooks将触发脚本中的功能!

您可以运行unregister功能来清除所有回调到您应用程序的webhook。

转到Trello,然后尝试更改在电子表格中标记为“输入”的任何值。 如果您正确设置了电子表格,这些更改将导致“输出”字段更新为新值!

如果您还希望在编辑电子表格时进行更新,则必须创建一个触发器。 在脚本编辑器中,选择“ Edit > Current project's triggers 。 单击“ Add a new trigger然后选择onUserEdit以在“ From spreadsheet On edit事件上运行。


最初于 2018 年8月30日 发布在 terzalo.com