cdloh5k downloadsSimple CRON / scheduler to regularly run user scripts or commands.
Obsidian Cron is a plugin for Obsidian.md that allows users to schedule Obsidian commands or custom user scripts to run automatically on a schedule.
To install Obsidian Cron you can download it through the community packages within Obsidian, or download the latest release and add it manually.
Add jobs in the plugin settings page.
Each job requires
Each job also has three toggable options
An API is exposed to add user functions via Javascript. The name is treated as a UUID for the job ensure that this is consistent across reloads of Obsidian to ensure that locks / last run data is usable.
An instance of the Obsidian app is passed to all user function as the first and only paramater.
To clear locks for jobs added via the API you can add a job with the corrosponding name and then pass the name to the clearJobLock(name: string) function also in the API.
Example of a user function
const cron = app.plugins.plugins.cron.api;
cron.addCronJob('addCronJob', "* * * * 3", {"enableMobile": true}, function(app){console.log('Job has ran!')});
Obsidian cron has the ability to hook into the native Obsidian Sync plugin. When enabled all locks, cron runs & commands will wait for Obsidian Sync to be fully completed before running any cron jobs.
This is useful if you have multiple instances of Obsidian running and want to ensure that cron jobs only run on one device or once per Obsidian vault.
At the start of each cron job a lock is saved into the plugin settings that stops multiple instances of the same jobs running. Sometimes if jobs don't finish cleanly they can be left with locks still in place. They can be unlocked in the settings page of the plugin.
Obsidian Cron is released under the MIT License. See the LICENSE file for more information.