OmniFocus by Omnigroup has become the leader of the pack in terms of Mac and iOS task management. While there are millions of task list apps available for iPhone and iPad, very few compete with OmniFocus across all Apple platforms and qualify as professional-grade task managers. Out of the box OmniFocus does everything a GTD practitioner needs and its integration with Mac OS X is very tight. However, there are a few scenarios where you’d like to enrich OmniFocus’ standard functionality or increase the level of integration with Mac OS X. Thankfully OmniFocus offers a very extensive Applescript API, which allows scripting gurus to create some magic. While Applescript is a relative simple scripting language it is obvious that only a fraction of users will actually open an editor and create a script themselves. But that isn’t what you need to do to get some extra out of OmniFocus. The OmniFocus Extras forum on the Omnigroup user forum is one of the great sources for ready-to-use Applescripts. All you need to do is move them into the right directory on your machine and occasionally modify some of the scripts parameters to fit your needs. The following AppleScript are those which are extremely handy and I use on a daily basis. There are many others available on the forum and other places, but many of them didn’t really add much value to my workflow, which is a pretty standard one, or solve problems I never encountered.
Opening Project (Support Material) Folder and Notes
One thing I don’t like in OmniFocus is how notes and files attachments to projects are implemented. I rarely use the notes field on projects or tasks to attach files or actual notes. Instead I keep all my files in a dedicated folder per project on my hard disk (actually in my Dropbox). This is where this script comes in handy as it looks for a folder with the same name as your OmniFocus project and opens it. It requires you to have all your project folders in one main folder, in my case this is my ‘Support Material’ folder. If the a folder by the name of the project does not yet exists, the script will ask to create it before opening it in Finder.
The second script from this package does roughly the same thing for notes. It’ll search for a note file, e.g. a text file or OmniOutliner, with the same name as your OmniFocus project and opens it for you. Again, if it doesn’t exist the script will ask you whether you like to create it. Since I use Notational Velocity for most of my notes, I make no use of this script, but did so before and it works wonderful. You install both scripts in the dedicated OmniFocus script folder (see below) and add them as icons to your OmniFocus tool bar. The original scripts and a comprehensive description can be found at the original site while this OmniFocus Extra forum thread has lots of discussions, tips and some handy modifications.
Add ‘Waiting For’ emails to OmniFocus
This script started its life actually here. I wanted to track tasks I delegate to other people by email using OmniFocus without the need to manually enter the ‘waiting for’ action. Using Mail-Act-On 2 and MailsTags, two beautiful Mail.app extensions by indev.ca, I have been able to develop an AppleScript that is called by a Mail.app outbox rule, checks whether the email just sent is tagged with ‘@Waiting’ and if so add a task with reference to the original email to OmniFocus. The icing on the cake is the Growl notification you’ll get once the task got added. No ever since I haven’t put any effort into the script in terms of adding new functionality or fix bugs. Luckily the great OmniFocus community in the Omnigroup’s forums picked the script up and enhanced it in a few iterations. It is now more reliable and even uses things like the tickler date and project if set in MailTags to file the task straight to the corresponding OmniFocus project (if it exists) and add a due date to it. Refer to this forum thread to obtain the latest version.
Quickly find a project
While OmniFocus has its own search function it is limited in scope to what ever filters, views or perspectives you currently have in your respective OmniFocus window. If you quickly need to bring up a specific project you consequently often need to make sure you reset filters, view or perspective to one that allows you to find that project. This handy script allows you to search OmniFocus for a specific project without that hassle. It can either be triggered from within Launchbar, the popular application launcher, or from within OmniFocus, e.g. from its toolbar. In both cases you need to provide a string which is included in the projects name. You can even use wildcards in that search string. The script, when it finds a matching project, will open the project in a new OmniFocus window for you. In case multiple projects contain the search string you get to choose the one you have been looking for from a list. Awesome work by Rob Trew. Find it in the following OmniFocus Extra forum thread.
Verify that next actions exist for all projects
There are many reasons why project get stuck. Most of them you can’t address with an Applescript, but one reason actually can be fixed with some quick commands: The non-existence of a next actions. At least I sometimes wonder in my Weekly Review why a certain project did not progress this week only to find out that I missed to define a next action. This very often happens when you have a next action, especially a ‘waiting for’, which gets checked off, but since you maybe working in context view of OmniFocus, you miss to add a new action for that project.
This is where Curt Clifton’s Applescript that verifies the existence of a next action for all active projects comes in handy. It runs through all projects and marks those that miss a next action by adding ‘Missing NA’ to the projects name, which makes it quite easy to find those projects later on to correct the situation. Of course you will be displayed a dialog summarising which projects without next actions have been found and marked. In case all projects have next actions a brief Growl message appears assuring you that everything is alright. I have added this script to my OmniFocus toolbar and invoke it every day in my morning routine. Get the script in this thread on the OmniFocus Extra forum or from Curt Clifton’s website which also include a bunch of other Applescripts for OmniFocus.
Add new task via LaunchBar/QuickSilver
At times I was confused by the number of Heads-up Displays (HUDs) I was enable to invoke with different key combinations on my system. Be it the addition of a new task, send out a new tweet, navigate your iTunes controller or access the application launcher - too many key combinations to remember and to get right. The solution: Consolidate as much as you can. And with powerful application launchers like Launchbar or Quicksilver you can do most of the things in one HUD. The only thing that doesn’t come out-of-the-box is the ability to add new tasks to OmniFocus from your application launcher. Also you may not only want to capture a plain task, but also assign it with a context, project or due date. All this magic is provided by this script from the OmniFocus forum. You can invoke it through Launchbar or Quicksilver and provide it with a string which, using a defined syntax, can also add context, project and due date to the task you are about to send to OmniFocus.
Extra: Export from Things to Omnifocus
A little bonus at the end: Many people these days change from cultured code’s Things to OmniFocus for various reasons, but mainly because of the lack of OTA (over the air) or Cloud sync of Things. Now getting all those tasks and projects over from Things into OmniFocus can be a very tedious job. Not so with this script, which does all the work for you. Check also this forum thread where there is a good description of the process and also some enhancements to the script itself.
How to install script for OmniFocus
Now that you have learned about all this magic you can do to OmniFocus and your workflow, I am sure you are eager to get going. But how to install these scripts?
- Scripts that you intend to invoke through Launchbar or Quicksilver typically go into your general user script directory (∼/Library/Scripts). They will be index by your application launcher automatically (if you haven’t change that in the settings) and can then be invoked with a few keystrokes. Make sure you understand the different ways how to pass parameters to those script from within your application launcher
- Those script you want to call from within OmniFocus, i.e. by adding a corresponding script icon to the toolbar, get copied to the same directory, but two levels deeper in the folder dedicated to OmniFocus (∼/Library/Scripts/Applications/OmniFocus). When restarting OmniFocus and customising the toolbar you will find icons representing those scripts you have copied into the above folder ready to be dragged and dropped onto your toolbar.
Of course, there are many more Applescripts for OmniFocus, which you may find useful. The five covered in this post are those I use all the time and that really help me enhance my workflow. The OmniFocus Extra forum on the OmniGroup website remains the best source for any other scripts you may want to explore. Make sure to leave a comment here if you have or have found any other useful AppleScript that boost your OmniFocus productivity.