Calculate Next Monday with TextExpander

I consume a lot of information and save the best pieces to my notes in Roam. When I see something I might want to include in my upcoming newsletter I’ll give it the tag #[[Newsletter mm/dd/yyyy]] where the date is whatever this coming Monday is.

This way when it’s time to write my newsletter I already have a bunch of notes ready for me to choose from.

Well having to figure out what next Monday’s date is over and over again started getting cumbersome.

Any time I find myself doing something multiple times I like to find a way to automate it.

So I created a macro for TextExpander (one of my favorite productivity tools) that will automatically create my tag for me whenever I need it.

Now all I have to do is type in .mon and bam my tag fills out and always has this coming Monday filed in.

If you want to do the same just create a new TextExpander snippet.

Choose “Javascript” as the content type.

And then paste the following code in:

function nextDate() {
  var d = new Date();
  d.setDate(d.getDate() + ((7-d.getDay())%7+1) % d.getDay()); //grabs next monday but returns today if today is monday

  var dateStr = d.getDate().toString(); //get day of month
  var monthStr = d.getMonth() + 1; //increment 1 because it is zero index based at starts at 0
  monthStr = monthStr.toString();  //now convert into string
  var yearStr = d.getFullYear().toString();
  var tagStr = "#[[Newsletter " + monthStr + "/" + dateStr + "/" + yearStr + "]]";

  return tagStr;
}

nextDate();

I highlighted the parts that are unique to my use case in orange. You can the extra text I added (e.g. remove + "/") or add your own (e.g. + "hello").

I hope that helps!

Leave a Reply

Your email address will not be published. Required fields are marked *

Top