Omnifocus - what is it?
I am not going to exhaustively talk about Omnifocus because there are lots of incredible blogs and tutorials out there. I am however going to say I have finally found my complete task managing application that offers, not only everything I could ask for functionality wise, but a new level of efficiency allowing me to be more productive than I have ever been.
Omnifocus is a robust and immensely flexible application that allows you to take the GTD (Getting Things Done) notion and apply it to your everyday life. This includes giving you a flexible overview of all your tasks and projects, whether personal or for your professional career.
I have been using OmniFocus on the Mac, iPhone and iPad for about 2 months now and I have found a workflow that suits me and my responsibilities perfectly. The Omnifocus Perspectives, Contexts, and Folder Layout with Projects helps me achieve, on a day to day basic, my pending projects and tasks.
There are however a few features within Omnifocus that are tailored to the power users; functionalities that the community has worked to build up together: AppleScripts.
The OmniGroup have built into the application, support for extra components, like themes and custom icons that you can download. They have also built AppleScript support. The OmniGroup themselves have not created the AppleScripts you can use; rather the Omnifocus community has stepped up and done this to help fellow members of the Community.
Yes, AppleScripts. Most users have not heard of or had any reason to work with AppleScripts, but the AppleScripting community contains a powerful set of functionalities that could really improve your daily workflow. I would highly recommend investigating AppleScripts to help you in your daily usage.
Through a bit of searching online (and throughout the Omnifocus forums), I have come across a few Omnifocus scripts which are now deeply embedded into my workflow and I wanted to share these with you here.
Note: The sites I am going to link to all have instructions for how to use the AppleScript and I will also add a specific Workflow I use.
There are often times where you have a project, or a series of tasks that require repetition every so often. Take, for example, getting your car tax renewed. You may create this as a project with the title “Renew Car Tax”. You’d have to do some of the following tasks:
- Receive letter from the Driving Institute (DVLA in UK, DMV, etc)
- Get car serviced
- Download insurance documents
- Apply for Car Tax with taking the following documents
- Driving license
- Letter of certificate from the car servicing
- Letter from the DVLA
- Apply tax to car
It took me 1 minute to create that list, but imagine, if you had to do that every year or every 6 months, why not create an Omnifocus Template?
Chris Sauve has created a script with a series of instructions for how to set it up. The basic principle is, once you invoke this script in Omnifocus, it will prompt you for all of the information you need (if your project requires prompting) as well as the time and where it should sit in your Omnifocus structure. For example, as a profession, I have to regularly install our client software for a customer in the form of a Proof of Concept. This involves me having to create a complex project list consisting of items such as:
INSTALL SOFTWARE FOR $NAME (Project Name)
- Ensure prerequisites are in place
- Download software
- Configure, etc.
This template allows me to put $name as a parameter, which when invoking this script, prompts me for the name of the customer. This way, a project is created in a destination of my choice with the customer name. This allows me to invoke my next script to find it, if I ever need to rather than using the search function.
When you are navigating through Omnifocus, it can sometimes be counter-productive if you need to stop what you’re doing to navigate to a specific project and you have to work through multiple folder structures. Of course, you can press Option and double click on the name of a project while in the Contexts to be taken there, but that limits the flexibility. Enter the find project script:
Invoking this script allows you to search for a project and because my template creates the project with the customer name being prompted for, I can easily search for that. Unfortunately as this script does not search Folders (which would be even more flexible), I’ve now resorted to tagging my project name with [ ] where the name of the customer would be in those brackets. It doesn’t look pretty, but for using this script, it works perfectly.
Verify Next Action Exists
Depending on how often you do a review, it is inevitable that some projects stall because of a lack of availability of the next action. By this, I do not mean not being able to see the next action because of a future date, I mean a project not actually having a defined next action.
This point has been highlighted by Sven Fechner in his post: http://simplicitybliss.com/2010/12/top-5-omnifocus-applescripts/ (there are a few good scripts here, including the Find Project script mentioned above).
Note: Save Sven’s site into your RSS feed; he has some great tutorials on Omnifocus and all things productivity.
The specific script I am referring to is listed here: http://www.curtclifton.net/projects/
Invoking this script anywhere in Omnifocus will allow you to be alerted to the fact that some projects have a missing next action. It will tell you the name of the project but it will not link directly to the project. It will however append the words MISSING NA to the project name. Using the Find Project script above, you can quickly search for that project to find the project in question that is missing a next action.
Once you’ve done this, while within the project, you can invoke Curt’s “Clear Missing NA” script which clears the word MISSING NA for you. Simple.
Note: Keep in mind that all of the scripts mentioned actually utilise Growl to inform you of what is happening while the script is run and when it has completed. I will talk more about this in a second.
Today, Tomorrow and Defer
No matter how organised and efficient you are, there are times where you need to move a start (or due) date of a task or project. Taking a book out of David Sparks’ page, I do not set due dates for anything unless it has an explicit due date because seeing the red number by the Omnifocus icon is not helpful. I instead use Start dates as my way of saying “I would like to start this today because it is fairly important”. Tasks and Projects that do not have a start date are needing to be done, but with no time frame in mind.
Inevitably at some point you may need to defer a task. At the end of each day (I have a daily review that lets me depict and select the MIT for the day, but at the end of the day I go through my “Today” perspective to see if I’ve missed anything), there may come a time where I just need to defer the start dates. You can easily use the Inspector while highlighting multiple objects, or you can individually go through the tasks and defer the date. It is however easier to invoke a script to change the date automatically. Invoke the Tomorrow script and it will automatically set the start date (and due date if you have it) to tomorrow. Or go to tomorrow’s tasks, select tasks and run the script for Today and it will change the tasks to Today’s date. FInally, run the Defer script to receive a popup to determine the number of days to be deferred by.
These scripts were created by the talented Dan Byler and is someone David Sparks speaks very highly off in his Omnifocus Screencasts.
There are some other great scripts on his site as well.
Completed Task Report to Evernote
If you’re a user of Evernote (which you really should be if you’re not), you may have organised a great deal of notebooks and notes in there. With a relatively new script (only almost 2 months old), a great Ben Waldie from TUAW has created a script which will create a beautifully formatted Evernote report of your completed tasks.
When invoking the script, you can specify a timeframe for the report; either just today’s tasks, last week, this week, months or years, etc. You receive a popup and the moment you select a timeframe, even if Evernote is not open, it will open automatically and have this crafted report. The report itself is a beautiful format and this has been a driving force for my productivity. I am not sure how long Omnifocus keeps your “completed” tasks in the database before it does the archiving clean up, but this is a good way for you to, for example, see what you’ve done today, this past week or last week, etc. I have a repeated task to run this report at 5pm on Friday for the past weeks’ worth of work. However, I have on a few occasions also run the report on a daily basis to provide an overview to management of the work and projects I am working on.
As you can see from the comments, I have requested a few additional features for this script that has the potential to be the best script of all; right now the script prints out the names of the Projects and keeps that as the title and has no reflection on the Folder that that project sits in. I overcame this by appending the [ ] to the end of each project with the customer name which helps in this case, along with the Find Project script as well. However, I make heavy use of the Notes field in Omnifocus with TextExpander to make notes when I’ve spoken to someone or I need to update the project, etc. I have requested for the script, or at least instructions on how to make the script include the Notes of each task as well as the completed day of each task, along with the project. This also does not indicate whether you have completed a full project; i.e. if you run the script, in the report, it will have the project name along with the tasks, but there is no visual indication whether the project itself was complete or just some of the tasks in that project. It is easy to look at the report and perceive it as you completed this project with all of the tasks in it, where it might be you’ve just completed some of the tasks in this project. I have therefore, at the end of every project created a “Sign off as complete” task, so when I sign it off, the project gets marked as complete and in the report, the project will have the sign off as complete task.
This script is new so I will certainly give it time for it to be perfected and for these additional requirements of mine to be setup as options, but Ben did mention he is working to improve the script.
Alerts and Notifications
As briefly mentioned earlier in this post, Omnifocus and the scripts make use of Growl. Growl is essentially the notification framework that existed on Mac OS X before the Notification Centre that was introduced recently. Growl in fact continues to work with many applications efficiently in a way that Notification Centre has not. For example, you can specify the priority of notifications that come through Growl, along with a level of customisation. Omnifocus makes heavy use of Growl. If you have set a task to start at a specific time and then never received any sort of notification, it is because you do not have growl installed. When you install Growl, you will receive an alert for a start that is due to “start” now.
I would recommend downloading it and playing with the preferences, because you may not want to be alerted to every thing happening. Although outside of the scope of this post, I will briefly mention Prowl as well (I will be creating another post relating purely to Growl and Prowl). The Omnifocus iOS App does not currently push notifications to you if a task is starting (it does if a task is new), but if you’re away from your computer and a task is about to start, Prowl is an extension of Growl where, when you receive the notification in Growl, it gets forwarded to your iOS device in the form of the Prowl app. I will create a post about this as soon as possible.
The scripts above make heavy use of Growl. For example, if you run the “Verify Next Action” script; if the script finds a project without a next action, you will get alerted in Omnifocus itself with a popup, but if there are no projects, you will get a Growl notification saying “Congratulations, you do not have any projects with missing next actions”. When you run the Tomorrow script from Dan Byler, you will get an alert in Growl saying X number of tasks have just been moved, etc. The same applies for the Today and Defer scripts. This is where priorities come in as you may not want all of this pushed to your device in the form of Prowl, so you could set up, like I have, just the “starting of tasks” as a high priority with everything else set to medium, and for Growl to only push the high priority tasks to your device. Very clever.
I talked a lot about the invoking of scripts but I did not go into details on how I do this. In a nutshell, I do this with Alfred, but you could easily use something like LaunchBar or QuickSilver (both of which I have not tried; I just use Alfred for everything).
Note: in order to do this, you do NOT need to have the Alfred PowerPack as you are just running a particular file.
Each of the sites mention the need for creating a specific folder structure in your Library. Navigate to the Library by opening up Finder and using a Keyboard shortcut of Shift Command G which will open up a popup saying “Go to Folder”. Type in ~/Library and you will see your Library. In here, the instructions are to create a particular folder structure (Applications > Omnifocus) and to place all of the scripts in there. The advantage with this set up is, from the customise toolbar option in Omnifocus (where you can put your perspective icons), you can actually place the scripts onto the toolbar. The scripts will only appear if you place them in this folder (after downloading and unzipping the file, move the .scpt file to this location).
However, using a little trick, without ever having to leave my keyboard, I can invoke these scripts. I have renamed each of the scripts to start with OFS just so it is easy to find on my computer and placed these into a folder in my Documents directory called Omnifocus Scripts. Using TextExpander to create simple snippets, I have created one for each script. For example, the verify next action script is ::next. What I mean by this is, typing in ::next translates to OFS_Verify Next Action. I have done the same for all of the scripts above. This way, a simple call of Alfred (for me this is Opt Space) allows me to type ::next and it translates to OFS_Verify Next Action and automatically finds the .scpt file in my documents directory; I press enter and that’s it, the script runs. The rest of my textExpander snippets are ::def for the Defer, ::2mr for Tomorrow, ::rep for the Evernote report, etc.
You could of course tweak Alfred to look directly in the Omnifocus scripts directory, but it just takes longer because it is not a normal place for it to look whereas the documents is. This works perfectly into my workflow.
A lot of Information…
I have provided an extensive workflow set here. This is however just one side of my workflow productivity. WIth this in mind, I wanted to add a quick note here saying I am in the process of planning out and hopefully soon to be creating a course on my idea of productivity which will be hosted, to start with, as a course on Udemy.com. I will update you when I’m nearing the completion of this.