#BlackLivesMatter Support the Equal Justice Initiative.   •   🇺🇸 Register to Vote

OmniFocus Due Date Shuffle Plugin

Sunday, July 26th 2020

I've used OmniFocus for a really long time1. Long enough that it actually predates their iOS app, if only because (I'm pretty sure) it predates the time when Apple had an app store and allowed 3rd-party software! I remember being very pleased when the iOS app came out and I could sync my todos between my laptop and my pocket. It felt very futuristic.

Since then both the desktop and iOS apps have matured and grown, but there is one feature the iOS app has that the desktop doesn't (Unless it's hidden somewhere I've never found?) that I've always wished it did: randomizing dates!

That might sound like a silly feature (and says a lot more about me than anything else...) and anathema to hardcore GTD principles for some people, but I find it bizarrely helpful. When there's nothing forcing my hand to finish a particular task and the due date really could be completely arbitrary, I find assigning a random one gives me the appropriate amount of structure and little kick-in-the-pants to see it through sometimes.

Somewhat recently OmniGroup has unveiled great documentation for their scriptable automation support at omni-automation.com. I decided to try to recreate the date shuffling feature myself and add an action that randomly assigns due dates to selected tasks or projects.

You can view the 0.2 (as of this writing) version here:

https://github.com/georgemandis/omnifocus-shuffle-due-dates-plugin

It's pretty straightforward. After you've installed the plugin by double-clicking the .omnijs file you highlight the tasks or projects you want to assign due dates to. Select Automation > Shuffle Due Dates. A window will prompt you asking for the min and max range of dates you'd like to randomly assign due dates between. It defaults to between 1-week and 1-month out, but you can change it to whatever you like. Click "Shuffle Away!" and the selected tasks and projects will each receive a random due date somewhere between the two dates you specified.

That's it! Kind of silly, but it makes me happy. I use it for things like assigning due dates to errands I need to run but aren't particularly urgent, to blog posts I want to write but never seem to get around to (I selected a bunch of them and chose due dates between 2 weeks and the end of the year) and to some interesting projects, services and resources for technologies I'd like to research but haven't really prioritized.

Will this work? I guess check somewhere between 2 weeks from now and the end of the year we'll see!

If you use it and find it useful please let me know!


  1. Truthfully, I've tried to make the switch to managing all my personal and client projects through something like TaskPaper or Todo.txt a few times. I've even tried to roll my own, like any good programmer, but that's a different post for another time.*