How to run Heroku Scheduler weekly

This post is a compliment to my Heroku Scheduler tutorial. By default, Heroku’s Scheduler addon only lets you run commands every 10 minutes, every hour, or daily. If you want to run Heroku Scheduler weekly, you can use this post.

After you’ve opened up Heroku Scheduler with heroku addons:open scheduler, create a new job. Set Schedule to “Every day at…” and set Run Command to one of the following, depending on which day you’d like your command to run:

if [ "$(date +%u)" = 1 ]; then YOURCOMMAND; fi # Monday
if [ "$(date +%u)" = 2 ]; then YOURCOMMAND; fi # Tuesday
if [ "$(date +%u)" = 3 ]; then YOURCOMMAND; fi # Wednesday
if [ "$(date +%u)" = 4 ]; then YOURCOMMAND; fi # Thursday
if [ "$(date +%u)" = 5 ]; then YOURCOMMAND; fi # Friday
if [ "$(date +%u)" = 6 ]; then YOURCOMMAND; fi # Saturday
if [ "$(date +%u)" = 7 ]; then YOURCOMMAND; fi # Sunday
Run a task every Monday:

if [ "$(date +%u)" = 1 ]; then MY_COMMAND; fi
Run a task every 1st day in a month:

if [ "$(date +%d)" = 01 ]; then MY_COMMAND; fi
You could also run a job every year on December 24th:

if [ "$(date +%m)" = 12 ] && [ "$(date +%d)" = 24 ]; then MY_COMMAND; fi

Remember to replace YOURCOMMAND with your command – in my case, this is rake taskname, but yours might be something like node task.js.

All we’re doing is performing a conditional check to see if it’s the right day before running our command.