in applescript

Today and Tomorrow (OmniFocus scripts)

11 July 2011: as described here, I’ve switched to a Start-based workflow and updated my scripts to reflect this change. By default, these scripts now set the start dates of selected items, not due dates—though you can still switch to “Due mode”. This post has been updated to reflect these changes.

I’ve added two more scripts to my OmniFocus repertoire: Today and Tomorrow.

As one might expect, Today sets the “Action Date” of selected item(s) to the current date, and Tomorrow sets the action date to the next date. (By default, the Action date is the Start date, but you can switch to use the Due date if you prefer.)

Why might you need this? A few days of ignoring OmniFocus is enough to make any date-sorted view overwhelming. My Defer script is one method to deal with these items: defer them by a day, a week, etc. But sometimes you just need to set these items to today. Or tomorrow.

As with Defer, these scripts work with any number of selected tasks.

If you use the default “Start” mode:

  • The Start date of each selected item is set to the current day
    • If an item has a previously assigned Start date, its original time is maintained. Otherwise, the start time is set to 6am (configurable in the script)

If you use “Due” mode:

  • The Due date of each selected item is set to the current day
    • If an item has a previously assigned Due date, its original due time is maintained. Otherwise, the due time is set to 5pm (configurable in the script)
  • If an item has a Start date, it is moved forward by the same number of days as the due date has to move (in order to respect parameters of repeating actions)

Putting it all together

I’ve set my keyboard shortcuts for Defer, Snooze, Today, Tomorrow, and This Weekend to ctrl-d, ctrl-z, ctrl-t, ctrl-y, and ctrl-w, respectively (using FastScripts), so shuffling tasks couldn’t be easier. Use cases:

Catching up after holiday: Select all overdue tasks, hit ctrl-t to bring them current. Then snooze or defer the ones you won’t get to today.

Planning today’s tasks: Select your tasks and ctrl-t them into the day’s queue. Planning tomorrow? Use ctrl-y instead.

Download them here



Thanks to Seth Landsman for his role in inspiring my Today script. His version is very similar but doesn’t quite match the defer logic I need.

Usage note: some items inherit due dates from their parent task or project, but don’t actually have due dates themselves. This script ignores those items.

For those with something to say:



  1. Thanks so much for these scripts. Great work. I have been looking for these functions, and it will make my life much easier now.

  2. Hi Dan,

    Glad my script was useful, looking forward to take a look and your implementation and learning something … :)


  3. In trying to find the best GTD app for myself I have bought OmniFocus, Things and finally Easy Task this week. Even though it is the simplest I love Easy Task because it has the Today, Tomorrow Next 7 Days categories in it. These focus options are priceless, They give you a quick view of upcoming task that are due. And I cant believe as robust as omnifocus it doesnt have these focus categories. And neither does things.

    You are a genius. For creating these i cant wait to implement them. However I can’t figure out how to install them. Im running Mac OS 10.6.4 And I can’t find the ~/Library/Scripts/Applications/Omnifocus folder.

    There is no Scripts folder in my Library folder. Ant the only file named Omnifocus i have is the actual application file which launches the app.

    Can you please tell me what im doing wrong, or if im not reading correctly.

  4. Oh and i forgot to mention that I dont want to use EasyTask anymore because i found it too buggy in syncing iphone and mac.

  5. Nchaudry,

    If you don’t have that folder, you’ll need to create it. I.e., in your home directory, go to the Library folder and create a subfolder called “Scripts”. Within that, make another subfolder called “Applications”, and finally another subfolder called “OmniFocus”.

    With the scripts in there, OmniFocus should be able to see them, and you can (for instance) add them to your OmniFocus toolbar. I recommend using the excellent FastScripts to launch your scripts, partly because lets you painlessly assign keyboard shortcuts.

    Hope this helps!

  6. Hey thanks so much that totally worked and i added the buttons to the menu bar. I don’t understand why i would need Fastscripts since having the buttons seems to be all i need.

    Anyways thanks again and keep up the amazing job..


  7. How do I make shortcuts like you did for your applescripts? Also, how do I change the icon of the scripts in the toolbar?

  8. Ryan—there are lots of ways to add shortcuts, but I recommend a program called FastScripts. It’s free for up to 10 shortcuts and well worth purchasing if you use it for more than that.

    As far as icons, you can customize them by changing the icon of the actual script file in the Finder. More info:

  9. Dan, I have used your scripts… very useful and Thanks.

    I have now got an excel sheet of tasks and their due dates. I want to be able to import them into omnifocus via scripting. I have used Josh Betz todo.scpt and found it useful. However I am unable to get the due dates in. Any advice?

    Thanks, Raj

  10. Raj — OmniFocus can export to CSV but I’m not sure if you can import from a spreadsheet. I’d suggest getting in touch with OmniGroup support. They’re really responsive and should be able to help you out.

  11. hello,Dan,I have used your scripts,But when I use, will jump out of a hint:100 item0000 now due tomorrow.Could you tell me how to solve this problem?