Remembering Payday

Wanting to remember to run the payroll for my company, I was amazed to discover that Google Calendar does not offer any way to create a recurring calendar entry for the last day of each month. As it turns out, this is one of the examples actually quoted in the iCalendar standard — RFC2445 (on page 43) — so it’s very surprising Google has not implemented a way to manage such entries.

Fortunately Google Calendar does actually support recurring entries for the last day of a month, so it’s possible to hand-craft an .ICS file that can then be imported into Google Calendar. Baptiste Gazul’s helpful blog post started me in the right direction and I was able to craft some entries for my needs with help from the RFC. I saved the quoted text below into a plain-text file with a .ICS suffix and then used Google Calendar’s Import Calendar function to add the entry.

To have a calendar entry for Payday on the last weekday of every month, try:

BEGIN:VCALENDAR
BEGIN:VEVENT
DTSTART:20150331
RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1;WKST=MO
SUMMARY:Payday
DESCRIPTION:Last weekday of each month
END:VEVENT
END:VCALENDAR

Change DTSTART to specify the date of the first payday.

I actually have to run payroll on the Friday before the last weekday of the month; this seems to work:

BEGIN:VCALENDAR
BEGIN:VEVENT
DTSTART:20150417
RRULE:FREQ=MONTHLY;BYDAY=FR;BYSETPOS=-1;WKST=MO
SUMMARY:Run payroll
DESCRIPTION:Friday before last weekday of each month
END:VEVENT
END:VCALENDAR

One Response

  1. When I read this post I was puzzled because I was certain I’d done this for some events in my Google Calendar. So I tried it and sure enough you can’t do it through the Google UI.

    That’s when I remembered that I normally setup events via the Lightning calendar plugin in Mozilla Thunderbird. Testing it out I find that must be how I did it before. So anyone who doesn’t want to manually create an ICS file, you can use the Thunderbird/Lightning GUI to create events that the Google Calendar UI doesn’t support

Comments are closed.