While playing with some OmniFocus AppleScripts last night, I realized that OmniFocus on the Mac uses a sqlite database (in addition to the zipped .xml files that it uses for synching). This is pretty interesting, because it could be a very convenient way to write tools that interact with OmniFocus (and use something like Python instead of AppleScript).
$ sqlite3 ~/Library/Caches/com.omnigroup.OmniFocus/OmniFocusDatabase2 SQLite version 3.7.3 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .mode column sqlite> .headers on sqlite> SELECT task.name AS task, context.name AS context ...> FROM task JOIN context ON task.context = context.persistentIdentifier ...> WHERE context.name LIKE '%email%' AND task.dateCompleted IS NULL; task context --------------------------------------------- ---------- Send Amanda new color photo via Cloud website Email
Pretty cool. With a little Python and SQLAlchemy, I could probably create a nice little Python module for dealing with OmniFocus data.