This repository contains scripts to automate projects and tasks synchronization between TimeCamp and other systems:
- Synchronizing clients, projects and tasks into TimeCamp
- Exporting time entries from TimeCamp
- Synchronizing meandatory tags and assigned users
-
Clone this repository:
git clone https://github.com/timecamp-org/script-timecamp-projects-sync.git cd script-timecamp-projects-sync -
Install the required dependencies:
pip install -r requirements.txt
-
Set up the environment variables:
- Copy
.env.exampleto.env - Fill in required environment variables and TimeCamp API credentials and other configuration in
.env
- Copy
To set up automatic daily synchronization, you can use a task scheduler like cron (Linux/macOS) or Task Scheduler (Windows).
python3 fetch_harvest.py
python3 sync_projects.py
python3 export_time_entries_harvest.py 2026-03-19 2026-03-19python3 fetch_toggl_json.py projects.json
python3 sync_projects.pypython3 fetch_redmine_and_sync.py
python3 export_time_entries_redmine.py 2026-03-19 2026-03-19python3 fetch_azuredevops.py
python3 sync_projects.pypython3 fetch_jira.py
python3 sync_projects.pypython3 fetch_zendesk.py
python3 sync_projects.pypython3 fetch_mondaycom.py
python3 sync_projects.pyBy default, sync_projects.py runs all actions: creating missing tasks, archiving stale
tasks, creating/restoring mandatory tag lists and tags, assigning mandatory tags to tasks,
and assigning users to tasks.
Set TIMECAMP_SYNC_ACTIONS to a comma-separated list to run only selected actions:
# Only create/restore tags, assign mandatory tags, and assign users.
TIMECAMP_SYNC_ACTIONS=tags,mandatory_tags,users uv run --env-file .env --with-requirements requirements.txt python sync_projects.pyAvailable actions are tasks, archive, tags, mandatory_tags, and users.
# Move all root level projects/tasks as a subtask
uv run --env-file .env --with-requirements requirements.txt python helpers/archive.py --subtask-of {task_id} --dry-run
# Assign random colors to root level tasks
python3 helpers/assign_random_apple_colors.py --dry-run
uv run --env-file .env --with-requirements requirements.txt python helpers/assign_random_apple_colors.py --dry-run
# Batch assign users to selected tasks
uv run --env-file .env --with-requirements requirements.txt python helpers/assign_users_to_task.py --task-ids 34523534,34523535 --user-ids 364263,364264
# Batch assign users to all root level tasks
uv run --env-file .env --with-requirements requirements.txt python helpers/assign_users_to_task.py --user-ids 364263,364264
# Fill missing mandatory tags from tasks.json on time entries for all account users
uv run --env-file .env --with-requirements requirements.txt python helpers/assign_mandatory_tags_to_time_entries.py --from 2026-06-01 --to 2026-06-05 --dry-run
uv run --env-file .env --with-requirements requirements.txt python helpers/assign_mandatory_tags_to_time_entries.py --from 2026-06-01 --to 2026-06-05Contributions are welcome! Please feel free to submit a Pull Request.
MIT