我想在 daily note 中汇总每日的任务,目前是想利用任务列表插件生成的自定义属性 plugin-task-list-handleAt,用 sql 匹配年月日是当天的块,尝试了好久都未能成功,论坛也找不到方法,请大佬帮忙写下 sql 代码,谢谢。
相关帖子
-
-
大佬,我的块有自定义属性,属性值是 20241201211510 这样的日期格式,我想用 sql 匹配当天的的年月日,比如今天的就是匹配自定义属性值是 20241102 开头的块。明天会自动更新为匹配自定义属性值是 20241103 开头的块。
1 回复 -
-
ONIONLYONE • • 1 评论
佬,能细说一下想要达到的应用场景吗?想学习一下。
数据库模版列代码 - 获取绑定的任务列表块的状态 0 看我这个贴,我主要用数据库管理任务,把子任务添加到数据库里,能把这个插件的时间属性带进数据库里就不用重复设置了5kyfkr • -
你试试这个可以吗
.action{ if index . "custom-avs" } .action{ $id := .id } .action{ $blocks := queryBlocks "SELECT * FROM blocks WHERE id = '?'" $id } .action{ $b := first $blocks } .action{ $match := regexFind "custom-plugin-task-list-handleAt=\"([0-9]+)\"" $b.IAL } .action{ $value := trimPrefix "custom-plugin-task-list-handleAt=\"" $match } .action{ $value := trimSuffix "\"" $value } .action{ $value } .action{ end }
仅保留年月日版
.action{ if index . "custom-avs" } .action{ $id := .id } .action{ $blocks := queryBlocks "SELECT * FROM blocks WHERE id = '?'" $id } .action{ $b := first $blocks } .action{ $match := regexFind "custom-plugin-task-list-handleAt=\"([0-9]+)\"" $b.IAL } .action{ $value := trimPrefix "custom-plugin-task-list-handleAt=\"" $match } .action{ $value := trimSuffix "\"" $value } .action{ $year := substr 0 4 $value } .action{ $month := substr 4 6 $value } .action{ $day := substr 6 8 $value } .action{ $year }-.action{ $month }-.action{ $day } .action{ end }
1 操作wilsons 在 2024-11-02 20:12:18 更新了该回帖 -
佬,我刚刚发现 daily note 文档中自定义属性,该值刚好是 20241102 这样的格式,能否把匹配当日日期变成匹配嵌入块所在的 daily note 文档自定义属性值呢,我现在的方案如果查看昨日 daily note 中的嵌入块,显示的也是今天的任务。另外,如果要加一天,也就是显示明天的任务,有办法实现吗,感谢。
1 回复 -
用这个试试,粘贴到 SQL 查询文本框中即可
//!js return (async () => { // sql查询语句 const sql = `SELECT * FROM blocks WHERE ial LIKE '%custom-plugin-task-list-handleAt="${getCurrDocCustomAttr()}%';`; // 查询逻辑 const result = await query(sql); if(result.length > 0) { return result.map(row=>row.id); } return []; // 获取当前文档的自定义属性值 function getCurrDocCustomAttr() { const attributes = Array.from(item.parentElement.attributes); const attr = attributes.find(attr=>attr.name.startsWith('custom-dailynote')); return attr ? attr.value : ''; } // 查询数据库 async function query(sql) { const result = await fetchSyncPost('/api/query/sql', { "stmt": sql }); if (result.code !== 0) { console.error("查询数据库出错", result.msg); return []; } return result.data; } })();
1 回复 -
就是我想要的效果,原来这么复杂,我试了几小时放弃了 😂 。感谢大佬。
另外我想再问下:
1 如果要显示明天的,就是今天的加一天要怎么改。
2 查询不到结果可以返回文本“今天没有任务了”,我记得之前自动添加到数据库的那个代码可以返回添加了多少文档,不知道这个可不可以。
1 回复 -
查询明天的可以用这个 SQL
SELECT * FROM blocks WHERE ial LIKE '%custom-plugin-task-list-handleAt="' || strftime('%Y%m%d', datetime('now', '+1 days')) || '%';
自定义返回结果有点复杂,建议使用思源自带的"不存在符合条件的内容块"提示即可。
如果有兴趣研究,可参考 建议增加“将文内所有 x 级标题转化为 x 级标题” - wilsons 的回帖
1 回复 -
-
感谢推荐,我也有看过那个模板的介绍,但是那个模板是每日的日程是写在 daily note 里面的吧?我的日程是写在其他笔记里,在 daily note 里面汇总,有关还是不一样。
1 回复 -