The Scenario
A handoff note lands in your inbox. The ops analyst who built the team utilization dashboard left last month, and nobody took over the Roam meeting export that fed it. The dashboard has been showing stale data for three weeks. Your manager noticed.
The underlying data — all Roam meetings from the past 30 days — needs to get into a Google Sheet. That sheet feeds a Looker Studio report. The report goes to the department head on Monday.
The bad version:
- You find Roam's meeting API docs and realize you need to paginate through results if there are more than 100 meetings in the date range.
- You write a quick script to call the endpoint, but the response schema has rooms nested inside participants and you spend an hour figuring out how to flatten it into tabular columns.
- You get the data into the sheet, but the timestamps are in milliseconds epoch format. The Looker Studio date filter doesn't recognize them. You add a formula column to convert, then realize the original sheet had those columns in a different order and you have to update the Looker reference.
This is supposed to be a data pull, not a debugging session.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It talks to Roam's meeting API, flattens the response, and writes the data into the sheet in the shape you describe — including timestamp formatting.
List all Roam meetings from the last 30 days and write meeting ID, room name, start time, end time, and participant count into the 'Meeting History' sheet
What You Get
- One row per meeting in the 'Meeting History' sheet
- Meeting ID in column A, room name in column B, start time in column C (human-readable datetime), end time in column D, participant count in column E
- Paginated automatically — if there are 200 meetings, all 200 land in the sheet
- Start and end times formatted as readable datetimes, not epoch milliseconds
What If the Data Is Not Quite Ready
You need participant email addresses instead of just a count
List all Roam meetings from the last 30 days and write meeting ID (A), room name (B), start time (C), duration in minutes (D), and a comma-separated list of participant email addresses (E) into the 'Meeting History' sheet.
The sheet already has older records and you only want the new ones appended
Fetch all Roam meetings from the last 30 days. Check column A of the 'Meeting History' sheet for existing meeting IDs and only append rows for meetings whose ID doesn't already appear there.
You want to filter to meetings that lasted more than 15 minutes
Pull all Roam meetings from the past 30 days. Only write rows where the meeting duration is greater than 15 minutes. Columns: meeting ID (A), room name (B), start time (C), duration in minutes (D), participant count (E).
Full utilization report: pull meetings, calculate total hours per room, and write a summary tab
Fetch all Roam meetings from the last 30 days into the 'Meeting History' sheet — meeting ID (A), room name (B), start time (C), duration in minutes (D). Then in a separate tab called 'Room Summary', write each unique room name and its total meeting minutes for the month.
One prompt builds both the raw log and the summary — no pivot table required.
Try It
Get the 7-day free trial of SheetXAI and open the Google Sheet that feeds your team's utilization reporting, then ask it to pull the Roam meeting history. If you're also auditing who's in Roam during this review cycle, the user roster export spoke runs the same pattern against user data.
