# 2025-11-14 ノート中の収支情報の総和をプロパティに記入する[[Templater]]スクリプトを作る
[[mixi2]]の[[Obsidian]]部コミュニティにて、デイリーノートに記載された収支情報の総和をプロパティに自動的に記入する方法はないだろうかと質問している方がいた。
[[Templater]]プラグインを使うことで簡単に作れそうだと思ったので実装してみた。
ただし、「自動的」の部分については質問者がどういうイメージか分からないのでもうひと工夫が必要かもしれない。
[[Templater]]プラグインができることは、処理をコマンドにして手動実行するところまでだ。
細かい仕様については質問者が望む形に寄せて以下のようにした:
- ノート中の「`\`」(半角バックスラッシュ)または「¥」(半角円記号)の直後に半角数字が記載された箇所をすべて抽出し、その総和をノートの`expenses`プロパティに記入する。
- 「`\`」または「¥」の直前に`-`(ハイフン記号)がついている場合は直後の半角数字を負数として扱う。
```javascript
<%*
const currentPath = tp.file.path(true);
if (!currentPath.includes('Daily/')) {
new Notice(`このスクリプトはDailyフォルダ内のノートでのみ実行できます`);
return;
}
const content = tp.file.content;
// 半角バックスラッシュ`\`または半角円マーク`¥`直後の半角数値を集計する
// 記号の直前にマイナス記号がある場合は負数として扱う
const pattern = /(-)?[¥\\](\d+)/g;
let matches = content.matchAll(pattern);
let total = 0;
for (let match of matches) {
const sign = match[1] === '-' ? -1 : 1;
const amount = parseInt(match[2]);
total += sign * amount;
}
await app.fileManager.processFrontMatter(tp.file.find_tfile(tp.file.path(true)), (frontmatter) => {
frontmatter.expenses = total; // expensesプロパティに記入
});
new Notice(`expensesプロパティに ${total} を記入`);
return;
%>
```
元々、質問者がデイリーノート中の支出情報をプロパティにまとめようと思ったきっかけとして、今月12日の[[Obsidian]]アップデートにおける[[Bases]]機能の強化があるようだ。
このアップデートにより列に対して要約関数を設定できるようになり、デイリーノートをまとめて要約すれば収支情報を月次ノートで一覧化・総和の自動算出ができるというアイデアを挙げられていた。
私はまだ[[Bases]]の活用方法をまったく何も考えていなかったので、なるほどこれは便利かもしれないということで実利も兼ねて作成してみた。
他の方の役に立てば幸いである。