How to set up recurring events on the last working day of the month in Google Calendar

Google Calendar doesn’t support repeating events on the final working day of the month

This week, I thought it would be useful to add a recurring event to my calendar to remind me of when pay day is.

My company pays its employees on the last working day of each month. If the final day of the month is a Saturday or Sunday then they bump it back to the Friday.

But the last working day of the month isn’t an option in Google Calendar’s recurring appointment options.

Recurring events options in Google Calendar

How to do it

Thanks to this post by Brian Jackson, How to Set up Repeating Event in Google Calendar on Last Day of the Month, I managed to achieve this by creating a custom iCalendar (.ics) file and importing it into Google Calendar.

Create an iCalendar file

In a plain text editor (I use Sublime Text, but Notepad will work) copy and edit the following:

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYSETPOS=-1;BYDAY=SU, MO,TU,WE,TH,FR, SA
SUMMARY:Pay day
DESCRIPTION:Woohoo! It's pay day!
DTSTART;VALUE=DATE:20220326
SEQUENCE:0
END:VEVENT
END:VCALENDAR

You will want to edit a few of the lines. (Refer to the full iCalendar specification RFC5545 for more details.)

1. RRULE:FREQ=MONTHLY;INTERVAL=1;BYSETPOS=-1;BYDAY=SU,MO,TU,WE,TH,FR,SA

This is the recurrence rule (rrule) that sets the repeating pattern for your event. As it is currently, this will repeat your event on the last day of each month. If you don’t work Saturdays and Sundays then simply remove the SU and SA from the BYDAY parameter: BYDAY=MO.TU,WE,TH,F.

2. SUMMARY:Pay day

This is the text that will appear as the title of your calendar entry.

3. DESCRIPTION:Woohoo! It's pay day!

This is the text that appears once you open the calendar entry.

4. DTSTART;VALUE=DATE:20220326

This is date of your first event. The format is YYYYMMDD. So, today, Saturday 26 March 2022, would be: DD = 26, MM = 03, YYYY = 2022, or 20220326.

Save and import

Once you’re happy, save your file with a .ics extension, e.g. payday.ics.

Then, import it into your Google Calendar:

  1. Click on the settings cog icon and select Settings.
  2. Select Import & export from the left-hand navigation.
  3. Select your new payday.ics file, and select a calendar to add it to from the dropdown list.
Import dialog in Google Calendar

4. Click the Import button and all being well, you will see a confirmation that 1 of 1 entries has been imported successfully.

Note: if you need to edit this recurring event, you cannot edit it in Google Calendar. You will need to delete the event, edit it in another iCalendar file and re-import it.

Update

Wednesday 4 September 2024

Having read this post, David contacted me from New Zealand and asked me for help with the following requirements:

  • Generates paydays on the 15th and 30th of each month (or the 28th/29th for February).
  • Moves paydays to the preceding Friday if they fall on a weekend.
  • Creates timesheet deadlines two days before each payday, and also moves them to the preceding Friday if they fall on a weekend.

I can’t see a way to do this using iCalendar logic alone, at least not that will work in all calendar applications. So, I have generated a PHP script that will do this. You can find the code and an explanation on how it works on my GitHub account:

https://github.com/garethjmsaunders/php-generate-paydays-ical

Published by

Gareth Saunders

I’m Gareth J M Saunders, 54 years old, 6′ 4″, father of three (including twins). Enneagram type FOUR and introvert (INFJ), I am a non-stipendiary priest in the Scottish Episcopal Church, I sing with the NYCGB alumni choir, play guitar, play mahjong, write, draw and laugh… Former Scrum master at Safeguard Global, Sky and Vision/Cegedim. Former web architect and agile project manager at the University of St Andrews and previously warden at Agnes Blackadder Hall.

4 thoughts on “How to set up recurring events on the last working day of the month in Google Calendar”

  1. Hiya thank you for making this guide but I got the error “Imported 0 out of 0 events. Unable to process your iCal/CSV file.” when importing :/ the file I created reads:
    BEGIN:VCALENDAR
    VERSION:2.0
    BEGIN:VEVENT
    RRULE:FREQ=MONTHLY;INTERVAL=1;BYSETPOS=-1;BYDAY=MO.TU,WE,TH,FR.
    SUMMARY:Email payslip
    DESCRIPTION:Send myself a copy of this month’s payslip
    DTSTART;VALUE=DATE:20250331
    SEQUENCE:0
    END:VEVENT
    END:VCALENDAR
    Do you have any idea if I wrote something wrong or if Google changed something that makes this method not work? Thank you very much!

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.