Import from Things 3


Is there any way to import from Things 3?


No good one. Currently, you can export tasks via copy/paste, but the unedited export is really messy. You could make things slightly better by copying into a text redaction tool like textsoap, but this only makes it slightly better.

I’ll play a little with options and report back. I think into the direction Things-Textsoap-??-OmniOutliner- OmniFocus


This thread has an AppleScript (plus modification) that is reported to be working.




Trying to export from current version of Things (3.6), but the script is not working… I am not good with scripts :-(

I get an error on this line:
repeat with aToDo in to dos of list “Anytime”
Syntax Error. Expected expression but found “to”.

This is chinese to me…

Help? I really want to go back to OF, but I have too much stuff to migrate…



I just tried it and I’m not getting any syntax errors. Is it possible you’ve missed out a line of the script or added something by mistake?

Also make sure the first line of the script is:

tell application “Things3”


Looks like a space between “to” and “dos” crept in - but that might be the plaintiff’s typing in the error rather than pasting. (Or something.)

So “todos” would be a variable and might well have also appeared on a prior line.


No, to do is correct.



OK. Thanks!


That did it. Thanks!!!


Hey all,

I just made the switch from Things 3 to Omnifocus 2. It was pretty easy, using Drag & Drop, and a bit of copying and pasting. I actually enjoyed taking the opportunity to review my tasks, improve my contexts a bit, and start afresh.

I documented my experience, and included step-by-step instructions on how to do it on my blog here:

Hope it helps :)



Is there any way to add something to this to make it not import duplicates??
Thank you Mate.


What kind of duplicates are you seeing? Are they in a particular list on T3?


I have switched back and forth between apps so I know there will be a lot of duplicates trying to be reimported.
Trying to figure out if there is a short cut to get the duplicates removed.

When I search for duplicates in my current OmniFocus 2 Pro, it shows a lot of duplicates.
But when I search for the OF files that are identified as duplicates, in OF search bar, there is actually only one copy of everything.

Could this be because I ran ‘find duplicate perspective’ before, and OF is still seeing the invisible duplicates it had removed??

Now when I try to import Things again, this being several months later, there will be LOTS of duplicates reimported.


@mate : Thanks for the script. I get an error halfway through that “list inbox can’t be read”. Can it be a language problem (I work on a German machine, Inbox is called “Eingang” here)?

Update: It was the language. Correct line for German seems to be:
set theTodos to to dos of list “Eingang” & to dos of list “Jederzeit” & to dos of list “Geplant” & to dos of list “Irgendwann” & to dos of list “Lonely Projects” & to dos of list “Logbuch”


@mate And here is another one: „OmniFocus“ hat einen Fehler erhalten: „status of inbox task id “muYuHYnceGx” of default document“ kann nicht als „dropped“ gesetzt werden." Translated: The script has trouble setting a task in OF to dropped. I changed it to done as I read somewhere that “dropped” is not support in OF3 but I guess you would have thought about that considering the rest of the script…


Thanks for taking the time to help further improve the script for others. It seems like yes, different languages need different labels for the folders. I wonder if there’s a way to read the names of the folders logicially instead of hardwiring them? For instance, use a variable to lookup the inbox instead of using a string?

The second problem of dropped, it worked great for me but I was using a beta? Dropped != done, done means it was completed, dropped means it wasn’t. Maybe they have changed the name again, or maybe that’s another localization?

I wish I had the time right now to experiment with this, I may get round to it one day. In the meantime, would you be able to pulbish a snippet of the working version for German users pls?



Hey @mate, just read your comment. And thanks for getting back so quickly. The code I posted above is working for German users (although it does not went through yet - I overlooked another instance of “dropped” which caused an error again. My guess is “dropped” is not supported by OF3 - as the other status labels were interpreted fine in English.)

The working code for German users would be (I have no understanding of what “Lonely Projects” refers to but it goes through without error).

set theTodos to to dos of list “Eingang” & to dos of list “Jederzeit” & to dos of list “Geplant” & to dos of list “Irgendwann” & to dos of list “Lonely Projects” & to dos of list “Logbuch”

Another question that came up: it would be great to collect the search terms / URL schemes needed to display the actions in things 3 that are not supported by this script. Do you have any experience how to tackle these? I might check that further at a later time.


@mate And I guess one things thats missing in the “not supported” list is headers within projects. Just realized mine were not imported (and where would they go to in OF3, could’ve spotted that before).


I thought about creating sub-projected to simulate “Headings” but felt it was a bit too involved.

There are many good ideas in Things that I’d love to see in OF3 and Headings are one of them. I guess we’ll keep switching back and forth until one of them has everything we need!