The Scenario
Three months ago, your organization rolled out five mandatory compliance training lessons in SafetyCulture. Every employee is supposed to have passed each one — 80% or above. Your training manager needs to know who hasn't hit that mark before the quarterly compliance review next week, so she can schedule re-tests. She asked for the data in Excel.
She doesn't know how SafetyCulture's training reporting works. You do. You also know that pulling per-user, per-lesson scores out of SafetyCulture into a spreadsheet is not a two-minute job without the right tool.
The bad version:
- Open SafetyCulture's training module and navigate to the first lesson.
- Export the attempt records, which gives you a CSV with every attempt — not just the latest one per user.
- Open the CSV in Excel, figure out how to deduplicate it to keep only the most recent attempt per user-lesson pair, and then repeat the whole process for the other four lessons.
- Try to join five deduped sheets into one matrix. Realize you're doing what is essentially a database join in Excel using XLOOKUP and it's taken two hours.
The training manager asked for the data by Friday. Today is Wednesday and you have other things to do.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent inside your Google Sheet. It fetches SafetyCulture lesson attempt records, deduplicates to the latest attempt per user-lesson pair, and writes the scored matrix to your sheet.
Open the SheetXAI sidebar and paste this:
Fetch all SafetyCulture lesson attempts and write user_name, lesson_title, score, pass_status, and attempt_date to my Excel sheet.
What You Get
- Every lesson attempt record from SafetyCulture written to your sheet.
- Columns for user_name, lesson_title, score, pass_status (passed/failed), and attempt_date.
- A flat list that's ready to pivot or filter to find the employees who scored below 80%.
What If the Data Is Not Quite Ready
You only want the latest attempt per user-lesson pair
SafetyCulture may have multiple attempts per employee per lesson — you want only the most recent score.
Fetch all SafetyCulture lesson attempts, keep only the latest attempt per user-lesson pair, and write user_name, lesson_title, latest_score, and pass_status to my Google Sheet — one row per user-lesson combination.
You only want employees who failed at least one lesson
Fetch SafetyCulture lesson attempts, deduplicate to the latest attempt per user-lesson, and write only the rows where pass_status is 'failed' — with user_name, lesson_title, and score — to my sheet.
You want a summary column showing how many lessons each employee failed
Fetch latest SafetyCulture lesson attempt per user-lesson, write user_name, lesson_title, score, and pass_status to my sheet, then add a summary tab with one row per employee showing their name and the count of lessons they failed.
Full re-test candidate list in one shot
Fetch all SafetyCulture lesson attempts, keep only the latest attempt per user-lesson pair, filter to the five mandatory compliance lessons [lesson_id_1 through lesson_id_5], write user_name, lesson_title, latest_score, and pass_status to my sheet, highlight in red rows where pass_status is 'failed', and add a summary tab listing every employee who failed at least one lesson with a count of how many.
The training manager gets a re-test candidate list instead of five raw exports.
Try It
Get the 7-day free trial of SheetXAI and open a blank Google Sheet — then ask it to pull your SafetyCulture lesson attempt scores and flag who needs a re-test. When you're done, see how the same workflow handles exporting training course completions or check the SafetyCulture integration overview.
