Weekly
Get a weekly timesheet from Jira worklogs
Each Monday you get the hours logged last week, per person and per issue.
- Runs
- Weekly
- Apps
- Jira
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every Monday at 9am, email me the total hours logged in Jira last week, per person and per issue, as a table.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A consultancy bills clients by the hour using Jira worklogs, and every Friday someone has to work out how many hours each person logged against each issue. Jira shows worklogs issue by issue, so the finance lead exports, pivots and double-checks, and still finds that a developer forgot to log Wednesday. Invoices go out late, or with hours that have to be reduced or explained after a client questions them.
Each week, ClickRuntime searches Jira for issues with worklogs in the last 7 days, fetches the worklogs for each, sums the time by author and by issue, and emails you a table. You get hours per person and per ticket without opening a spreadsheet.
Agencies, internal IT teams that charge back time, and managers who simply want to see where effort goes will find it useful.
What you get out of it
Invoices go out on time
With hours per issue ready each Friday, billing can be prepared the same day. Cash comes in sooner, and clients receive a bill while the work is still fresh in their minds.
Missing time is noticed
A person with half the usual hours stands out in the table. You can ask them to fill in the gap while they still remember what they did, instead of reconstructing the week later.
Clients see accurate hours
Hours drawn directly from worklogs are consistent with what the team recorded. Fewer corrections after a client queries the invoice means fewer awkward conversations and credit notes. Clients who see consistent hours tend to pay without disputing line items and delaying payment.
Effort by issue shows where time went
Seeing that one ticket consumed forty hours explains why a project is over budget. Managers can correct course or renegotiate scope with evidence, not impressions. That evidence also supports a conversation about pricing future work more realistically.
No spreadsheet pivots to maintain
Totals by author and issue are calculated the same way every week. The finance lead is freed from export, pivot table and formula checking, and the chance of an arithmetic mistake disappears.
How it works
What happens, step by step
Once a week, ClickRuntime finds every Jira issue that had time logged against it in the last seven days.
It reads the worklog entries on each of those issues and keeps only the ones from the past week.
It adds up the hours per person and per issue.
You get an email with the total hours for the week and a table of time logged by each person.
Before it runs live
- Connect Jira
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Jira steps into one automation
Under the hood
The code that runs this automation
from collections import defaultdict
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify
JIRA = "https://api.atlassian.com/ex/jira/your-cloud-id"
def jira(method, path, **kw):
resp = http.request(method, JIRA + path, headers={
"Authorization": f"Bearer {credentials.connection('jira', 'work')}", "Accept": "application/json"}, **kw)
resp.raise_for_status()
return resp.json() if resp.content else None
def search(jql, fields, limit=100):
return jira("POST", "/rest/api/3/search/jql", json={"jql": jql, "fields": fields, "maxResults": limit})["issues"]
@on_trigger
def run(event):
since = datetime.now(timezone.utc) - timedelta(days=7)
issues = search("worklogDate >= -7d", ["summary"], 200)
by_person, by_issue = defaultdict(float), defaultdict(float)
for i in issues:
logs = jira("GET", f"/rest/api/3/issue/{i['key']}/worklog",
params={"startedAfter": int(since.timestamp() * 1000)})["worklogs"]
for w in logs:
hours = w["timeSpentSeconds"] / 3600
by_person[w["author"]["displayName"]] += hours
by_issue[f"{i['key']} {i['fields']['summary']}"] += hours
table = "Per person\n" + "\n".join(f" {h:6.1f}h {p}" for p, h in sorted(by_person.items(), key=lambda x: -x[1]))
table += "\n\nPer issue\n" + "\n".join(f" {h:6.1f}h {k}" for k, h in sorted(by_issue.items(), key=lambda x: -x[1]))
notify.email_me(f"Jira time logged last week: {sum(by_person.values()):.1f}h", table)
return {"hours": round(sum(by_person.values()), 1)}FAQ
Common questions
Does it count worklogs from people who left the project?
How does it handle worklogs entered for an earlier date?
Can the table be split by project or client?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Find open issues missing key details
Each morning you get a list of open issues with no assignee, estimate or priority.
See how it worksTrack created vs resolved issues each week
Each Monday you see how many issues were created and resolved last week, and how that compares with the week before.
See how it worksFind issues stuck in progress
Each morning you see issues that have sat In Progress for too long, grouped by assignee.
See how it worksKeep exploring
Set up “Get a weekly timesheet from Jira worklogs” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.