Craft By Zen

Curation  /  The Stream  /  Obsidian Templater - Updating Properties on Daily Notes

Obsidian Templater - Updating Properties on Daily Notes

Published

I wrote a script that updates my daily notes to add properties. Since I’ve been using Obsidian for awhile, properties was introduced much later. I’ll walk through my code.

// Get the current file title, which is in a common date format: YYYY-MM-DD
const currentFileTitle = tp.file.title;

// Set folder you want to get latest file for here
const folder = "Calendar/Personal Reviews/journal and daily review/2022";

// Get all files in that folder, including nested folders
const filesInFolder = app.vault.getMarkdownFiles().filter(file => {
    return file.path.startsWith(folder);
});

// Sort files by file name
filesInFolder.sort((a, b) => a.basename < b.basename ? 1 : -1);

// Get the index of the current file
const currentIndex = filesInFolder.findIndex(file => file.basename === currentFileTitle);

// Get basename of previous and next TFiles to be used in link
let previousEntry = '';
let nextEntry = '';

// Wrap it around a try catch block in case there's something wrong with getting these basenames
try {
    previousEntry = `[[${filesInFolder[currentIndex + 1].basename}]]`
} catch (err) {
    console.error(err);
}
try {
    nextEntry = `[[${filesInFolder[currentIndex - 1].basename}]]`
} catch (err) {
    console.error(err);
}

Here’s my template that the templater plugin uses in markdown.

<%*This is where the JS code above is inserted-%>
---
tags: 
    - logs/daily 
created: <% currentFileTitle %>
previousEntry: 
    - "<% previousEntry %>"
nextEntry:
    - "<% nextEntry %>"
---

I’ve had to modify this depending if the file already has properties or not.