This Python script converts data exported from the Things todo app into CSV files compatible with Todoist. It allows you to export tasks from 'Things' using the things-cli tool and then transform them into a format that can be imported into 'Todoist' projects.
-
Install
things-cli:
To export your data from the 'Things' app in JSON format, you first need to install thethings-clitool. You can find the installation instructions and source code on the GitHub page. -
Export Data from Things: Use the following command to export all your tasks and projects from 'Things' into a JSON file:
things-cli -j --recursive all > things-all-output.jsonReplace
things-all-output.jsonwith your desired filename.
To use the script, simply download it from the repository:
Download the file Things_json-to-Todoist_csv.py directly from the repository here (or clone this repository).
- Open your terminal or command prompt.
- Navigate to the directory where you saved the script.
- Run the script with python as described below.
python Things_json-to-Todoist_csv.py [-h] [-a [AREA_NAME]] [-i] input_json [output_dir]
Convert Things 3 JSON export to CSV files. By default (without -a or -i options), the script processes all projects under all areas, creating separate CSV files for each project, and also processes top-level items into an 'inbox' file.
input_json: Path to the input JSON file exported from Things 3 usingthings-cli.output_dir: Output directory for CSV files (default: current directory).
-h, --help: Show this help message and exit.-a [AREA_NAME], --area [AREA_NAME]:
Process a specific area or all areas individually. IfAREA_NAMEis provided, only that area is processed. If-ais used withoutAREA_NAME, all areas are processed individually, creating separate files for each area.-i, --inbox: Process only top-level items (Inbox, Today, Upcoming, Anytime, Someday) into a single 'inbox' file.
- Process all projects under all areas and create an inbox file:
python Things_json-to-Todoist_csv.py things-all-output.json- Process all projects and output to a specified directory:
python Things_json-to-Todoist_csv.py things-all-output.json output_directory- Process only the specified area:
python Things_json-to-Todoist_csv.py things-all-output.json -a 'Area Name'- Process each area individually, creating separate files for each:
python Things_json-to-Todoist_csv.py things-all-output.json -a- Process only top-level items into an inbox file:
python Things_json-to-Todoist_csv.py things-all-output.json -iDrag and drop one of the generated CSV files into a Todoist project.
Also see:
For more information on formatting CSV files for Todoist, refer to the Todoist CSV format specification.