The Scenario
It's late January and the annual OSHA 300 log submission is due in three weeks. You have a Google Sheet with 15 recordable injuries from the past quarter — each row has the employee name, injury date, description, and the establishment ID. Every one needs an OSHA case record in SafetyCulture. The submission workflow requires SafetyCulture case IDs, which means the cases have to exist before anyone can generate the final log.
The last person who handled this built the cases manually, one at a time, which took most of a morning. You inherited their process.
The bad version:
- Open SafetyCulture's OSHA case creation form, fill in the establishment ID, injury date, and description for row 1, and save.
- Note the case ID somewhere — probably a sticky note — and paste it back into the sheet.
- Repeat 14 more times, hoping you don't transpose any injury dates because OSHA cares about dates.
Three hours of form-filling for a deadline that exists every year, for data you already have in the sheet.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent inside your Google Sheet. It reads your injury log, creates the OSHA cases in SafetyCulture, and writes the returned case IDs back into column E — no form-filling required.
Open the SheetXAI sidebar and paste this:
For each row in my 'Injury Log' sheet with columns employee_name, injury_date, description, and establishment_id, create an OSHA case in SafetyCulture and write the returned case_id to column E.
What You Get
- An OSHA case created in SafetyCulture for every row in the injury log.
- The returned case_id written to column E for each successful creation.
- Any failures — invalid establishment IDs, malformed dates — surfaced in column E so you know which rows need to be fixed before the deadline.
- A completed column E that serves as your case creation audit trail for the submission.
What If the Data Is Not Quite Ready
The injury dates are formatted inconsistently
Some rows have dates like "Jan 5, 2025," others have "2025-01-05," and a few have ambiguous two-digit year formats.
Normalize all injury_date values in column B to ISO 8601 format (YYYY-MM-DD) before creating the OSHA cases, then create one case per row and write the case_id to column E.
Multiple injuries at the same establishment need a single submission
Group the injury log rows by establishment_id, create OSHA cases for each row, and write the case_ids to column E — noting which establishment each case belongs to in column F.
Some rows are missing a description
For rows where the description column is blank, use the text "No description provided" as the case description. Create all OSHA cases and write the case_ids to column E.
Full 300-log prep pipeline in one shot
Normalize injury dates in column B to ISO 8601, replace blank descriptions with "No description provided," create a SafetyCulture OSHA case for each row using the establishment_id in column D, and write the returned case_id or error to column E. At the end, write a summary to column G: total cases created and any rows that failed.
The log data moves from your sheet to SafetyCulture without touching a single form.
Try It
Get the 7-day free trial of SheetXAI and open your injury log spreadsheet — then ask it to bulk-create your OSHA cases in SafetyCulture before the 300-log deadline. When you're done, see how the same workflow handles bulk-assigning incident collaborators or check the SafetyCulture integration overview.
