Fills in timesheets stored in Harvest, using Google Calendar events to record specific tasks.
This has been built in .NET with the intention of being installed as a .NET CLI tool.
To install, run the following after building:
dotnet tool install --global TimesheetFiller.Cli
To run, run the following:
timesheet-filler -i config.yaml
A config file is required, which is used to configure Google Calendar and Harvest and how events should be turned in Harvest tasks.
google:
clientId: {{SENSITIVE}}
clientSecret: {{SENSITIVE}}
calendarIds:
- test@group.calendar.google.com
harvest:
accountId: {{SENSITIVE}}
apiToken: {{SENSITIVE}}
# This represents how many hours you should be targeting each day. If all events for the day don't add up to this time, then the remainder will be logged against the default task.
defaultHoursPerDay: 8
defaultClientName: CompanyX # This should match the name of the target Client in Harvest
defaultProjectName: SuperProject # This should match the name of the target Project in Harvest
defaultTaskName: Development # This should match the name of the target Task in Harvest
daysToIgnore:
- Saturday
- Sunday
tasks:
# The tasks that calendar events should be logged against when the summary partially matches the specified searh term (case insensitive)
- calendarSearchTerm: Super Super Project
clientName: CompanyY
projectName: SuperSuperProject
taskName: Meeting
You will need to set up the following accounts for access:
You will need to follow these docs and add the secrets to the configuration file. When it comes to scopes in the setup process, you'll need to add the following scopes:
- calendar.calendars.readonly
- calendar.events.readonly
When you run the tool, you will be prompted to sign into your target Google account.
You will need to create a Personal Access Token and add it to the configuration file.