A template that can automatically handle recurring dates 🎉

Depending on the type of entry, it may be helpful to have a recurring date — however, in other cases, it may cause more harm. For example, tasks that should only update when you have completed them should not be have an automatic Next Due, since it may get calculated before you actually complete it said task. I recommend doing these by hand.

On the other hand, events that occur at a given frequency regardless of any action you take are ideal for recurring events. For example: birthdays, bills due, holidays, etc.

While I find it helpful to have both my tasks and my events in the same calendar, you may find it more suitable to split them. Below, you can select which layout you would refer.

Combined

Duplicate the template here

Tasks and Events

If you decide for a particular entry of yours to be recurring in an automatic fashion, make sure you check the 🔁 Auto Due property and provide the Frequency at which it will happen.

Split

Duplicate the template here

Tasks and Events

Events only require a Frequency value to become recurring, while tasks still need you to specify so using the 🔁 Auto Due property. In addition, I have created a relation between the two such that a task can be related to a particular event and vice-versa.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/cbc751f1-a665-4ef3-bd08-82fd1f064532/Screen_Shot_2020-08-14_at_3.05.52_PM.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1073baab-f8a3-4ee2-bca9-2815c6088b01/Screen_Shot_2020-09-07_at_6.59.04_PM.png

For both cases, in calendar view, the dates would appear only if the previous date has already passed such that there is only one copy of a task/event in the calendar at once.

Relevant Formulas

Bi-Weekly Due

A similar formula is used for yearly, bi-monthly, tri-monthly, etc.

dateAdd(dateAdd(dateSubtract(dateAdd(prop("Parsed Date"), dateBetween(now(), prop("Parsed Date"), "weeks") - mod(dateBetween(now(), prop("Parsed Date"), "weeks"), 2) + 2, "weeks"), 1, "days"), hour(prop("Date")), "hours"), minute(prop("Date")), "minutes")

Is Today

date(now()) == date(prop("Next Due")) and month(now()) == month(prop("Next Due")) and year(now()) == year(prop("Next Due"))

Is This Week

formatDate(now(), "YW") == formatDate(prop("Next Due"), "YW")