The Scenario
It's the last week of March and you're pulling together the Q1 compliance package for the board. You manage 47 sites across three organizations, and every one of them has a published audit report sitting in 21RISK from the last three months. The board deck template has been waiting in your Google Sheet since Monday.
The bad version:
- Navigate to Organization 1 in 21RISK, open the audit reports view, filter by Q1, export each report one by one — or copy the fields you need by hand — then paste them into the sheet and format the columns so they line up with the ones already there.
- Repeat for Organization 2, remembering that the column order in 21RISK's export doesn't match what you've set up in the sheet.
- Repeat for Organization 3, discover that two sites have draft audits mixed in with the published ones, spend 20 minutes untangling which rows belong.
The board meeting doesn't care how long it took you to get the data into the sheet. It only sees whether the numbers are there.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent inside your Google Sheet that reads your spreadsheet and talks to 21RISK directly. Open the sidebar, describe what you need, and it handles the API calls, the pagination, the filtering, and the writeout. You don't build a template. You don't configure a mapping. You just ask.
Pull all published audit reports from 21RISK for Q1 2026 and add them as rows in this sheet starting at row 2 — include site name, organization name, audit date, auditor, and overall score in columns A through E
What You Get
- One row per published audit report, starting at row 2, with no draft audits mixed in.
- Column A: site name. Column B: organization name. Column C: audit date. Column D: auditor name. Column E: overall score.
- If a report has no score yet (submitted but not calculated), the score field shows blank — no silent zero that skews your average.
- Any pagination across large result sets is handled automatically. You don't get the first 50 and stop.
What If the Data Is Not Quite Ready
The organization filter isn't working right
Some 21RISK accounts have organizations with similar names, and a broad pull might mix records from the wrong entity.
Pull all published audit reports from 21RISK for Q1 2026 for the organization named "Northern Region Sites" only, and write them to this sheet starting at A2 — site name in A, audit date in B, score in C
The sheet already has rows from a previous pull
If you ran a partial pull last week and the sheet has stale rows in rows 2 through 30, you need a clean start.
Clear the data in rows 2 through 200 of this sheet, then pull all published 21RISK audit reports for Q1 2026 and write them starting at row 2 with headers in row 1: Site Name, Organization, Audit Date, Auditor, Score
You need a summary count per organization, not just the raw rows
The board package sometimes needs a rollup table alongside the detail. One prompt can do both.
Pull all published 21RISK audit reports for Q1 2026, write each one as a row starting at A2 with site name, organization, audit date, and score, then add a summary table starting at G2 showing each organization name in column G and the count of published audits in column H
Full kill chain: filter, deduplicate, write, and flag low scores in one pass
Pull all published 21RISK audit reports from January to March 2026, remove any duplicate site entries keeping only the most recent audit per site, write the results to this sheet starting at row 2 with Site Name, Audit Date, Score, and Organization, then highlight any row in column E where the score is below 75 in orange
The underlying pattern is that cleanup, filtering, and conditional formatting can all ride in a single prompt rather than three separate passes.
Try It
Get the 7-day free trial of SheetXAI and open the Google Sheet where you're building your next compliance report, then ask it to pull Q1 audit data from 21RISK. You can also look at how to rank sites by compliance score or start from the 21RISK integration overview.
