Synchronize Asana tasks.
Upon execution, tw_asana_sync will synchronize, and on subsequent runs of the
program keep synchronized, the following attributes:
- Asana task
name<-> TW taskdescription - Asana task
completed<-> TW taskstatus - Asana task
due_atordue_on<-> TW taskdue - Asana task is deleted <-> TW task is deleted
Current limitations:
- Does not sync Asana tags, project names, subtasks, projects, likes, etc.
- Does not sync Taskwarrior tags, projects, annotations, etc.
- Only supports authentication with an Asana Personal Access Token
- Only syncs Asana tasks that are assigned to the user associated with that access token
You can find synchronize a series of Taskwarrior tasks that have a particular (or multiple) tags or synchronize all the tasks that belong to a particular project.
Use --taskwarrior-tags ... or --taskwarrior-project respectively for the
above
First, generate a personal access tokenon Asana.
![]() |
![]() |
![]() |
|---|
Next, make this token available to tw_sync_asana. This can be done by either:
- Storing the token in environment variable
ASANA_PERSONAL_ACCESS_TOKEN. - Storing the token with password store,
and telling Asana to load the token with
--token-pass-path.
$ tw_asana_sync --list-asana-workspaces
Asana workspaces:
====================
- My Workspace: gid=123456789012345To synchronize Asana tasks within a workspace:
tw_asana_sync --taskwarrior-tags asana --asana-workspace-gid 123456789012345 --token-pass-path <path-to-asana-token-in-password-store>Or:
tw_asana_sync --taskwarrior-tags asana --asana-workspace-name my-workspace --token-pass-path <path-to-asana-token-in-password-store>If you haven't installed or don't want to install password store you can pass the access token via an environment variable
ASANA_PERSONAL_ACCESS_TOKEN=123456789012345 tw_asana_sync -t asana -W my-workspaceInstall the syncall package from PyPI, enabling the asana and tw extras:
pip3 install syncall[asana,tw]

