Skip to content

Instantly share code, notes, and snippets.

@Azurewren
Last active December 31, 2024 21:24
Show Gist options
  • Save Azurewren/ea3211d730d6a21bfa42f5acab14b081 to your computer and use it in GitHub Desktop.
Save Azurewren/ea3211d730d6a21bfa42f5acab14b081 to your computer and use it in GitHub Desktop.
Automated Periodic Note Creation

This is a Templater Startup Script for use in Obsidian.

Each time Obsidian is opened, Templater runs the script to see if a weekly, monthly, quarterly, and yearly file exists for the current date. If one exists, it moves on, if not, it creates the file using the appropriate template, in the appropriate place.

<%*
let wk = tp.date.now('GGGG-[W]WW');
let mnth = tp.date.now('MM MMMM');
let qrtr = tp.date.now('Qo [Quarter]');
let yr = tp.date.now('YYYY');
let template = '';

if (!tp.file.exists(wk)) {
  template = tp.file.find_tfile('Periodic Note - Weekly');
  await tp.file.create_new(template, wk);
};

if (!tp.file.exists('[[Personal/Journal/' + yr + '/' + qrtr + '/' + mnth + '/' + mnth + ']]')) {
  template = tp.file.find_tfile('Periodic Note - Monthly');
  await tp.file.create_new(template, yr + '/' + qrtr + '/' + mnth + '/' + mnth);
};

if (!tp.file.exists('[[Personal/Journal/' + yr + '/' + qrtr + '/' + qrtr + ']]')) {
  template = tp.file.find_tfile('Periodic Note - Quarterly');
  await tp.file.create_new(template, yr + '/' + qrtr + '/' + qrtr);
};

if (!tp.file.exists('[[Personal/Journal/' + yr + '/' + yr + ']]')) {
  template = tp.file.find_tfile('Periodic Note - Yearly');
  await tp.file.create_new(template, yr + '/' + yr);
};
%>
@Azurewren
Copy link
Author

Thank you for noting the changes made to get this working again. :)

I use a different Templater Startup Script now, so I haven't looked at this in a while. My new script that I use, creates the appropriate folder on startup at the start of the Month and Year so that the Periodic Notes(https://github.com/liamcain/obsidian-periodic-notes) plugin can create the daily notes in the format YYYY/MM MMMM/YYYY-MM-DD as needed. This way I don't have to precreate the Year and Monthly folders to sort all my daily notes.

<%*
const newMonth = tp.date.now("MM MMMM")
const newYear = tp.date.now("YYYY")
const newMonthPath = "Personal/Journal/"+newYear+"/"+newMonth
const newYearPath = "Personal/Journal/"+newYear

if (await tp.file.exists(newMonthPath+"/"+newMonth+".md") == false) {
	await tp.file.create_new(tp.file.find_tfile("Periodic Note - Monthly"), newMonth, false, app.vault.getAbstractFileByPath(newMonthPath) );
	console.log("New Monthly File Created: "+newMonthPath+"/"+newMonth );
}
if (await tp.file.exists(newYearPath+"/"+newYear+".md") == false) {
	await tp.file.create_new(tp.file.find_tfile("Periodic Note - Yearly"), newYear, false, app.vault.getAbstractFileByPath(newYearPath));
	console.log("New Yearly File Created: "+newYearPath+"/"+newYear );
}
%>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment