Fork me on GitHub

zzamboni.org » code
things2thl

zzamboni.org » code
things2thl

Things to The Hit List converter

Download version 0.8.5


things2thl is a program for migrating data from Things to The Hit List. Both are awesome task management programs for the Mac. If you have been using Things and want to try THL, things2thl allows you to transfer all your areas, project, tasks and tags, so that you can use THL with real data.

Installation

You need Things 1.1.1 or later, since things2thl requires Applescript support. things2thl has been tested with Things 1.1.2 and The Hit List 0.9.3.13beta. Please note that some issues have been reported with later versions, and which will not be fixed for the moment. YMMV.

You can install things2thl as a gem package by running the following command in the terminal:

$ sudo gem install zzamboni-things2thl --source http://gems.github.com/

Note: things2thl needs the rb-appscript and hpricot libraries. If you don't have them already, they will be automatically installed by gem.

If you have a version of THL prior to 0.9.3.22beta, please use things2thl 0.8.4, since there were some changes in the names of the classes used internally by THL.

Usage

things2thl is a command-line program.

$ things2thl -h

Usage: things2thl  [options]

Modes of operation (required):
    -L, --projects-as-lists          Convert projects in Things to lists in THL
    -T, --projects-as-tasks          Convert projects in Things to tasks in THL
    -B, --projects-areas-as-tasks    Convert both projects and areas in Things
                                       to lists in THL. This implies that
                                       projects are not nested inside areas.
    -I, --inbox                      Transfer only Inbox tasks.

Options:
        --[no-]areas                 Transfer areas from Things (default: yes)
        --areas-as-tags              Transfer areas as tags in THL.
        --areas-as-contexts          Transfer areas as contexts in THL.
        --[no-]time-tags             Consider tags of the form Xmin/Xsec/Xhr as
                                       time estimates, set them in THL
                                       accordingly (default: no).
        --[no-]context-tags [REGEX]  Regular expression to identify tags that
                                       should be interpreted as contexts.
                                       (default: ^@).
                                       Use with no- to disable this feature.
        --sync                       Only transfer new items (default: no)
        --top-level-folder FOLDER    Do the import inside the named folders,
                                       instead of the top level
                                       (Inbox, etc. will also be created there
                                       instead of their corresponding places)
        --projects-top-level FOLDER  The named folder will be created to
                                       contain all projects when
                                       --projects-as-lists is used (otherwise
                                       they will be in the top folders group).
                                       If --projects-as-tasks is used, a
                                       'Projects' list is always created, but
                                       this option can be used to specify
                                       its name.
        --areas-top-level FOLDER     The named folder will be created to
                                       contain all areas.
    -c, --completed                  Transfer also completed/canceled tasks
                                       and projects (default: no)
        --[no-]archive-completed     If transferring completed/canceled tasks,
                                       also mark them as archived (default: yes)
    -q, --quiet                      Do not print items as they are processed.
                                     Twice: do not print stats at the end.
    -h, --help                       Shows this help message
    -v, --version                    Shows version

Options you should seldom need:
        --things THINGSAPP           Location of the Things application
                                       (default: /Applications/Things.app)
        --thl THLAPP                 Location of the The Hit List application
                                       (default: /Applications/The Hit
                                       List.app)

Missing functionality

  • Handling delegation ("People" feature in Things)

    Not sure how to transfer this to THL. Ideas are welcome.

  • Maybe create a graphical interface around it?

  • Improve performance

Known issues

  • None of these issues will be addresses for the time being, since for the moment I do not have the ability to continue development on this tool.
  • It has been reported that transferring notes fails on later versions of the applications, in particular Things 1.4.7 and THL 1.04.
  • Cancellation/completion dates are not transferred, because THL handles those attributes as read-only. So if you choose to transfer completed/canceled tasks, they will all appear in your "completed today" view.
  • One-time tasks in the Things "Scheduled" focus are transferred, but repeating tasks are not. The Things Applescript interface does not provide access to repeating tasks.
  • The format of time estimate tags is fixed for the moment. May add customization if I get any requests for it.

Feedback

If you have any feedback, please open a new issue on GitHub

License

This code is made available under the BSD license.

Author

Diego Zamboni (diego@zzamboni.org)
You should follow me on Twitter (@zzamboni)

Download

You can download the source code for this project from the links at the top of the page.

You can also clone the project with Git by running:

$ git clone git://github.com/zzamboni/things2thl