问题陈述
我一直在使用tana进行知识管理,并作为Kanban跟踪工作的Kanban董事会。从过去的经验来看,我了解到我受到生产力指标的动力。因此,我实施了两个tana commands,以跟踪我完成的工作并收到有关我的生产力统计信息的通知。
解决方案概述
为了完成此任务,我创建了三个tana命令。第一个命令将当前节点的名称写入Airtable base。此基础包括任务的名称(来自节点名称)和完成的日期。
第二个命令在Val Town上呼叫Val。 val是一个脚本,计算今天完成的任务,并且昨天完成任务,并产生这样的消息:您今天完成了$ {todaycount}任务,与昨天的$ {canceptcount}相比。
第三个命令是一个“超级命令”,仅按顺序运行第一个和第二个命令。
我的所有任务都用#outcome
标记,最后一步是将命令添加到#outcome
标签中,以便我可以在完成任务时单击它,然后将任务写入可播放,然后将通知弹出,显示了当今的生产力统计。
写信给Airtable
要创建一个新命令,您只需在节点文本中输入名称,然后运行“转换为命令节点”命令。然后,您嵌套塔娜(Tana)在下面命令:
您还可以看到调用Airtable API,我还将状态设置为“完成”。当您看到下面的成品时,这将更有意义。
创建阀
Val Town是一个网站,您可以在其中编写JavaScript或打字稿的片段。它具有社交功能,其中一件很酷的事情是您的脚本可通过API调用,非常适合与Tana集成。在Val Town,我为Airtable和Pushover API键设置了秘密,然后在私人Val中引用它们。尽管我决定不使用public val for calling Pushover,但由于Val作者可以重写该代码的风险,因此我不觉得可以安全地致电使用秘密数据。这是discussed here,将来会解决。
这是我的val的内容,它执行了指标计算并调用pushover:
async function get_work_stats() {
const today = new Date();
today.setHours(0, 0, 0, 0);
const yesterday = new Date(today);
yesterday.setDate(yesterday.getDate() - 1);
const options = {
method: "GET",
headers: {
authorization: `Bearer ${@me.secrets.airtable_api_key}`,
},
};
const response = await fetch(
"https://api.airtable.com/v0/appzwhnlnPyQYXO5f/Tasks",
options,
);
const data = await response.json();
let todayCount = 0;
let yesterdayCount = 0;
for (let record of data.records) {
const recordDate = new Date(record.fields.Created);
recordDate.setHours(0, 0, 0, 0);
if (+recordDate === +today) {
todayCount++;
}
else if (+recordDate === +yesterday) {
yesterdayCount++;
}
}
const message =
`You have completed ${todayCount} tasks today, compared to ${yesterdayCount} yesterday.`;
const po = await fetch("https://api.pushover.net/1/messages.json", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
token: @me.secrets.pushover_app_key,
user: @me.secrets.pushover_user,
message: message,
}),
});
const poData = await po.json();
}
请注意,此Val不会返回任何内容,因为我们仅对API调用的副作用感兴趣。
从塔娜打电话给Val Town API
我们快要完成了!现在可以使用Val,这就是我从Tana称呼的方式:
将所有这些放在一起
现在,我已经有了我的tana命令来将任务完成状态写入Airtable,另一个命令将指标状态提取并将其发布到推销中,我创建了一个按顺序运行两个命令的Tana Super命令,并给它提供表情符号名称,以便在日常用法中看起来不错:
我所有的任务都用#outcome
标记,所以最后一步是为此超级标签启用此命令:
演示
现在,当我检查任务时,我单击绿色的复选标记,而不是左侧的复选框。请参阅此示例:
该任务保存到Airtable,我在手机上收到通知。
下一步
我将继续构建此工作流程,以包括更有意义的指标。除了“今日对抗昨天”外,我还希望与上周的同一天相比看到今天。我还想添加见解,例如,当我超过上周的每周总数时,积极的强化。幸运的是,该系统可扩展到包括最重要的指标。
最后,我最终将从Pushover切换到Telegram Bot。 Telegram具有令人难以置信的API,可以免费运行机器人,并且Telegram为所有主要平台提供了本地客户。