A simple script that will take your omnifocus CSV and create a new one, formatted to the template that todoist requires
- Pull down this repo:
git clone git@github.com:esthor/omnifocus-to-todoist-migrator.git - In Omnifocus -> File -> Export -> (Export as a CSV) -> Save to the folder where this script repo is and name it
OmniFocus.csv(or change the INPUT_FILE constant in the script). - run
python script.py(orpython3 script.py) - A
Todoist_Projectsfolder will be created, with a CSV file for every project from your Omnifocus CSV export. (Due to limitations of Todoist import.) - In Todoist -> Project -> Click the 3 dots -> Import CSV
- Profit.
(More info on importing, from the Todoist Docs)
- Completed Tasks get dropped during migration. (Todoist import doesn't support them.)
- Exports to project-based CSVs. (Todoist import doesn't support multiple projects.)
- YMMV -- It worked on my machine, for my ~1000 Omnifocus tasks across dozens of projects...but it may not work for you. Open an issue if you've got a problem or submit a PR if you've got a better solution! 🙏
This is probably not interesting to anyone else, but it's useful for debugging and for reference later, especially if these underlying formats change in the future.
| Column | Content | Description |
|---|---|---|
| Task ID | Identifier for the task or project | Unique ID for each entry. |
| Type | Inbox, Action, Project | Specifies the type of entry. |
| Name | Name of the task or project | Title or description. |
| Status | Status of the task | Indicates if active, completed, etc. |
| Project | Associated project | Links the task to a project. |
| Context | Context or category | Additional categorization. |
| Start Date | Start date of the task | When the task begins. |
| Due Date | Due date of the task | Deadline for the task. |
| Completion Date | Completion date of the task | When the task was completed. |
| Duration | Estimated duration | Time required for the task. |
| Flagged | Flagged status | Indicates priority or importance. |
| Notes | Additional notes | Extra information about the task. |
| Tags | Tags associated with the task | Keywords for categorization. |
(Based on: This todoist reference doc)
| Column | Content | Description |
|---|---|---|
| TYPE | task, section, or note | Use task to add a task. Use section to add a section. Use note if you're adding a comment to the task in the row above. Values are case-sensitive and should be written in lowercase. |
| CONTENT | Text | Type the name of the task if you're adding a task (you can add labels by typing the @labelname as part of the task name). Type the name of the section if you're adding a section. Type the content of the note if you're adding a comment. |
| DESCRIPTION | Text | Type the content of the task description if you'd like to add a description. |
| PRIORITY | 1, 2, 3, or 4 | Type 1 to add p1 to the task (highest priority). Type 2 for p2, 3 for p3, and 4 for p4 (lowest priority). Leaving this cell empty will automatically add p1 to the task. |
| INDENT | 1, 2, 3 or 4 | Use 1 for no indent (parent task). Use 2 to indent the task to be a sub-task. Use 3 to indent the task to be a sub-sub-task, and so on. Leaving this cell empty will set the task to not be indented. |
| AUTHOR | username (ID) | Add the username + user ID in brackets of the person that created the task (e.g., Evan (14781400)). Leaving this cell empty will automatically add your name and ID. |
| RESPONSIBLE | username (ID) | Add the username + user ID in brackets of the person that you'd like to assign this task to (e.g., Evan (14781400)). Leaving this cell empty will not add an assignee to the task. |
| DATE | date and time | Add a date and time if you want to schedule the task. You can also set a recurring date. If this cell is empty, no date will be assigned. |
| DATE_LANG | Language code | Add the language code for the language of your Todoist app to set the date (e.g., en for English, fr for French). |
| TIMEZONE | Time zone | Add the time zone that's set for your Todoist account (e.g., US/Eastern). Leaving this cell empty will have Todoist automatically detect your time zone. |
| DURATION | Number | Add the estimated number of minutes it takes to work on a task. Leave empty to not add a task duration. |
| DURATION UNIT | minute or None | Specify the unit of measurement for the task duration. If there's no task duration, None will appear in this cell. |
| meta | view_style=board | Import the template in board layout. |
| DEADLINE | date | Add a deadline to this cell. If left empty, no deadline will be assigned to the task. |
| DEADLINE_LANG | Language code | Add the language code for the language of your Todoist app to set the deadline date. |
- cs: Czech
- da: Danish
- de: German
- en: English
- es: Spanish
- fi: Finnish
- fr: French
- it: Italian
- ja: Japanese
- ko: Korean
- nb: Norwegian
- nl: Dutch
- pl: Polish
- pt_BR: Brazilian Portuguese
- ru: Russian
- sv: Swedish
- zh_CN: Simplified Chinese
- zh_TW: Traditional Chinese