The Scenario
The invoice is going to the client at the end of the week. Your operations director needs a clean billable hours summary: total hours per consultant, broken down between billable and non-billable, ready to paste into the client statement.
All of that data lives in OneDesk as worklogs. Nobody has touched the billing tab of the Google Sheet in three weeks.
The last person who pulled this report did it by exporting a CSV from OneDesk's reporting screen, opening it in the sheet, running a SUMIF, discovering that one consultant's name was spelled two different ways across entries, spending 20 minutes consolidating the spelling variants, and then realizing the export had cut off at 500 rows and they were missing six weeks of data from before the filter reset.
That report was 40 minutes late and the client noticed.
The bad version:
- Export worklogs from OneDesk to CSV, open it in the sheet
- Build a pivot or SUMIF to aggregate by user, separating billable from non-billable
- Reconcile name variants and any rows where the billable flag is missing or ambiguous
- Discover the export was paginated or filtered and re-run it with adjusted parameters
You have three other deliverables due before end of week. This one should not require a debugging session to produce.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It connects to OneDesk directly, pulls all the worklogs, aggregates them, and writes the summary table exactly where you need it.
Fetch all worklogs from OneDesk, group total hours and billable hours by user, and write the summary table into the Billing Summary sheet with columns: User, Total Hours, Billable Hours, Non-Billable Hours.
The raw data comes back. The aggregation happens inline. The summary lands in the right tab.
What You Get
- All OneDesk worklogs fetched without pagination gaps
- Hours aggregated by user, separated into billable and non-billable
- A clean summary table written to the Billing Summary sheet with the columns you specified
- No intermediate CSV, no SUMIF to build, no name normalization to do manually
What If the Data Is Not Quite Ready
You need the raw entries alongside the summary
The client wants to see both the line-item detail and the per-user totals.
Pull every worklog entry from OneDesk into the Raw Worklogs sheet with columns: item ID, user, hours, start date, billable flag. Then build a summary table on the By User sheet showing Total Hours and Billable Hours per person.
You need to filter to a specific date range
The billing period is April 1 through April 30. Worklogs outside that window should be excluded.
Fetch all OneDesk worklogs with a start date between April 1 and April 30, 2026. Write the raw entries into the Raw Worklogs sheet (item ID, user, hours, start date, billable). Build the per-user summary on the By User sheet.
One consultant's name appears under two different spellings
The API returns "A. Rivera" for some entries and "Alex Rivera" for others. They need to be combined.
Fetch all OneDesk worklogs and write raw entries into Raw Worklogs. Build the summary on By User. Where user names appear to be the same person under different spellings — for example, an initial-only version and a full name version — consolidate them into the full name spelling before aggregating.
Full client billing close: filtered, deduplicated, with a total line
Date range filter, name normalization, raw and summary tabs, and a grand total row at the bottom.
Fetch all OneDesk worklogs with start dates in April 2026. Write raw entries into Raw Worklogs (item ID, user, hours, start date, billable). Normalize user names (consolidate obvious name variants). Build a per-user summary on By User with Total Hours, Billable Hours, Non-Billable Hours. Add a totals row at the bottom of the By User tab.
The pattern: filtering, normalization, and two-level output in a single ask so the billing close happens in one pass instead of three.
Try It
Get the 7-day free trial of SheetXAI and open the billing tab you have been meaning to update before the client invoice goes out — ask it to pull all the worklogs, aggregate by consultant, and produce the summary table in one shot. Also worth reading: how to log a timesheet as OneDesk worklogs, and the hub overview of all four methods for connecting OneDesk to Google Sheets.
