Scheduling OmniFocus Tasks in Fantastical 2 … for iOS!

In my daily job as a BI consultant I need to plan my work and I’m using OmniFocus for that. In fact it is my trusted system for all my projects, not only work related ones.

I allocate blocks of time in my favorite calendar app Fantastical 2 to work on the tasks (or next actions) that I’ve stored in OmniFocus.

Sven Fechner wrote a great post how you can schedule OmniFocus tasks in Fantastical by dragging and dropping when working on your Mac.

I found out that this works perfectly. Strangely the results are quite different when you use the Mac OS sharing extensions. When you select a task in OmniFocus and share it using the extension “Add to Fantastical”, the result is bad to say the least.

As I don’t always have my Mac at hand, I was wondering if I could achieve the same on my iPhone or iPad. This turned out to be quite an adventure.

In OmniFocus for iOS you can share a task as well but this only seems to work well when you mail that task, as you can see below.

It is possible that other apps are listed when you share a task from OmniFocus, such as Trello for example. However, when you share to Trello, you’ll notice that the name of the card remains empty and is not filled in with the OmniFocus task name. In the animation below I filled in a name myself and then looked in Trello what had happened. As you see, the OmniFocus task is included as an attachment in Trello with the obscure name “FocusAction.ofaction”.

After opening that file in a plain text editor, it turns out to be an Apple property list (or plist) file.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
     <key>newActions</key>`
    <array>
        <dict>
            <key>name</key>
            <string>Write blog post about scheduling OmniFocus Tasks in Fantastical 2 … for iOS!</string>
            <key>note</key>
            <string>http://simplicitybliss.com/blog/scheduling-omnifocus-fantastical2</string>
            <key>uuid</key>
            <string>luwnqVXgPUL</string>
        </dict>
    </array>
</dict>
</plist>

If your OmniFocus tasks contains a defer (<key>start</key>) and/or due date, additional keys and strings will be present.

While you may be able to parse this using Drafts, I took a different approach and used Workflow instead. In my workflow I use the name of the OmniFocus task as the name of the event to be used in Fantastical. If a defer (or start) date is present, the workflow will ask you if you want to use that date as the event date in Fantastical. Unfortunately Workflow doesn’t provide a means (or at least I couldn’t find it) to show you a list of available calendars, so you will need to type that in manually in a prompt.

Finally, the event gets created in Fantastical and you edit it further there. The notes field of the event contains a link back to your original OmniFocus task (which will open OmniFocus with that task). This is obtained through the <key>uuid</key>.

You can find the workflow here.