Automate Workday time entry using rodney and bash.
The Workday time entry web UI is... not universally loved. If you'd rather script your time tracking than click through the same forms every day, this is for you.
- Opens time entry dialogs for specific dates
- Fills in project, hours, and comments
- Submits entries automatically
- Reassigns existing entries to a different project/subproject
- Uses a persistent Chrome session so you only log in once
- Install rodney and jq
- Clone this repo
- Copy
config.example.bashtoconfig.bashand fill in your Workday URL and default project - Start the browser:
./scripts/start-browser.bash - Log in to Workday manually in the browser window that opens
./scripts/enter-hours.bash today 7,5 PROJ-12345 'Development > Task' 'worked on stuff'Arguments: date, hours, project search term, project match string, comment
Use --set-billable yes|no to override the Do Not Bill checkbox:
./scripts/enter-hours.bash --set-billable yes 2026-02-18 1 PROJ-12345 'Other > Internal' 'internal work'Move entries from one project/subproject to another, preserving hours and comments:
# Single day
./scripts/reassign-hours.bash 2026-02-18 'Development > AWS pilvi' PROJ-12345 'Other > Internal'
# Date range
./scripts/reassign-hours.bash 2026-02-16..2026-02-20 'Development > AWS pilvi' PROJ-12345 'Other > Internal'Arguments: date or range, old project match string, new project search term, new project match string. Only entries matching the old match string are affected.
Rodney drives a persistent headless Chrome via the DevTools Protocol. Each script command connects to the same browser instance, so your login session persists. The scripts use DOM selectors and JavaScript execution to interact with Workday's GWT-based UI.
See PLAN.md and dom-details.md for implementation details.
./scripts/start-browser.bash --stopAll code in this project was produced by a coding assistant, with human direction and review.
Personal automation tool. Use at your own risk. Not affiliated with Workday.