我用Memos在日记里记录每天的收支情况,格式如下:记账:: 渠道/类别/金额/明细
2023-5-18 记账:: 线下/交通/-28/打车从A地到B地
2023-5-21 记账:: 淘宝/服饰/-99/牛仔裤
2023-5-21 记账:: 闲鱼/电子产品/150/转让运动手环
希望能在周记里自动汇总该周的收支并生成表格?预期效果如下图:
我不会编程,有大佬能帮忙实现吗?
我用Memos在日记里记录每天的收支情况,格式如下:记账:: 渠道/类别/金额/明细
2023-5-18 记账:: 线下/交通/-28/打车从A地到B地
2023-5-21 记账:: 淘宝/服饰/-99/牛仔裤
2023-5-21 记账:: 闲鱼/电子产品/150/转让运动手环
希望能在周记里自动汇总该周的收支并生成表格?预期效果如下图:
我不会编程,有大佬能帮忙实现吗?
chatgpt
。
我也一直想弄个这种,现在都是在EXCEL上面记,看人家说Notion好用,但是在记笔记比较不放心
这只是一个笔记软件啊
我只知道有插件可以同步Memos到Obsidian。
如果您也是将收支记录放在单独的heading的话,可以直接使用橙猫在用 Obsidian 一年最喜欢的 7 个功能 一文中的代码来实现。
感谢分享的文章,作者很厉害,我只实现了其中的卡片功能。
不过看他的记账功能,似乎也没达到你的效果,你可以跟帖跟他交流下。
在我那个基础上,改亿点点可以实现。。但不懂编程就没必要。用custom frame插件嵌入表格类软件(Notion或Flowus或其他Excel类)去记账其实也行的
谢谢指点,您的文章已经给了太多提示啦。我没用过custom frame插件,也不懂Notion和Flowus,还是一点点慢慢学习吧 。
我试了,和ChatGPT的对话如下。
我使用Obsidian软件记录财务收入和支出,记录格式如下:
譬如:
希望在周记里自动汇总该周全部财务收入和支出。请提供dataview和javascript代码。
为了使用dataview和javascript代码来汇总该周的全部财务收入和支出,您需要执行以下步骤:
复制代码
# 财务记录
- 2023年5月21日,淘宝,服装,-99元,牛仔裤一条
- 2023年5月21日,都城,早餐,-20元,皮蛋瘦肉粥
- 2023年5月22日,都城,早餐,-18元,及第粥
确保日期格式与您的记录相同,并将每个记录保存为单独的行。
复制代码
## 本周财务报告
### 总支出:{{sum(file.finance.md.date >= thisWeek.Monday and file.finance.md.date <= thisWeek.Sunday and file.finance.md.amount < 0, file.finance.md.amount)}}
| 日期 | 来源 | 类别 | 金额 | 明细 |
| ---------- | ------ | ---- | ----- | ---------------- |
{{table(file.finance.md.date >= thisWeek.Monday and file.finance.md.date <= thisWeek.Sunday and file.finance.md.amount < 0, file.finance.md.date, file.finance.md.source, file.finance.md.category, file.finance.md.amount, file.finance.md.details)}}
### 总收入:{{sum(file.finance.md.date >= thisWeek.Monday and file.finance.md.date <= thisWeek.Sunday and file.finance.md.amount > 0, file.finance.md.amount)}}
| 日期 | 来源 | 类别 | 金额 | 明细 |
| ---------- | ------ | ---- | ----- | ---------------- |
{{table(file.finance.md.date >= thisWeek.Monday and file.finance.md.date <= thisWeek.Sunday and file.finance.md.amount > 0, file.finance.md.date, file.finance.md.source, file.finance.md.category, file.finance.md.amount, file.finance.md.details)}}
此代码将使用Dataview插件自动计算本周的开始和结束日期,并根据这些日期提取finance.md笔记中的财务记录。它会在笔记中生成两个表格,其中包含本周支出和收入的详细信息,以及本周支出和收入的总数。
请注意,在上述代码中,“finance.md”是您保存财务记录的笔记的名称。如果您使用了不同的笔记名称,请相应调整代码。
希望以上操作可以帮助到您!
我去看橙猫的那个帖子,但是好像他只是进行了一些简单的介绍,虽然提供了相关代码,但是作为一个小白我不太懂,而且我基本上没用过任何插件(较为反感插件,虽然方便,但感觉可能会因为OB版本的更新导致一些问题)。不过学到了一些东西,看他的介绍大致就是用了Dataview插件的数据整理这一类的功能,至于他提供的代码可能需要适配他的文件或标题命名,这点他没具体说,不过我打算自己去了解一下Dataview,学习一下相关代码的编写
基于橙猫的代码,做出了预期效果。谢谢橙猫!
为了省事,在日记和周记的YAML中都设置了weeks标记,周记中只汇总该周所属日记的记账信息。
记账信息都记录在日记的Memos标题下,记账信息的格式为"记账/来源/类别/金额/明细/",支出金额记为”-XX“。
效果如下:
Dataviewjs 代码如下:
const moneyHeading = ‘Memos’;//记账的heading
const keyWords =“记账”;// 记账标识字符
var p =dv.pages(“#DailyNote”).filter(b=>(b.weeks==dv.current().weeks));
var sumMoney = 0;
var inMoney = 0;
var outMoney = 0;
var pathTemp =“”;
for (let i of p.file.lists){
if(i.section.subpath==moneyHeading){
if(i.text.indexOf(keyWords)==-1){//统计包含记账的序列
delete i.text;
continue;
}
var matchText = i.text.replace(/\s*/g,“”).match(/(?<=/).*?(?=/)/g); // 去除字符串中的空格,然后匹配两侧都是"/"的内容
var curSpend = parseFloat(matchText[2]);
sumMoney += curSpend // 计算总金额
if (curSpend > 0) { inMoney += curSpend } // 计算总收入
if (curSpend < 0) { outMoney += curSpend } // 计算总支出
if(pathTemp!= i.path){//同文件第一个先清0
pathTemp = i.path;
}
i.source = matchText[0]
i.kind = matchText[1]
i.finance = matchText[2]
i.detail = matchText[3]
}else{
delete i.text
}
}
p = p.filter(function(b){return b.file.lists.finance.length != 0});
dv.paragraph(“总收入:”+Math.round(inMoney100)/100 +“元,总支出:”+Math.round(outMoney100)/100 +“元,净额:” +Math.round(sumMoney*100)/100 +“元”)
dv.table([“日期”,“来源”, “类别”, “金额”, “明细”], p.sort(b => b.file.name,“desc”).map(b => [b.file.link, b.file.lists.source, b.file.lists.kind, b.file.lists.finance, b.file.lists.detail]))
您好,我那个提问里看到了你的回复,找到了这里,想问下你这个也是每天是一个笔记是吧,我想着是弄一个笔记为一年,然后每天是划分为一级或是二级标题这样
我用memos输入,每天自动新建一个笔记,需要汇总时稍微修改一下dataview里的代码,设定汇总时间段就可以。好像还有插件能够合并笔记,也比较方便生成合订本。
如果把一年的记录记在一起,需要时再从里面提取,代码会很复杂吧。再说,一年下来,记录会不会太长、标题会不会太多?
如果只是用来记账的话,已经有专门记账的插件了。
好的,感谢回复,我已经在研究其他记账软件了。。。