The Scenario
You run HR at a 200-person company and the hiring pace just tripled. There are 40 new hires starting in the next three weeks, all of them captured in a Google Sheet — name in column A, start date in column B, job title in column C, department in column D. Your HRBP just pinged you asking when the offer letters will be ready. You said "end of day." It's 2pm.
The bad version:
- Open the sheet. Read row 2. Open Google Docs. Create a new document. Type "Dear [Name]" and replace [Name] with "Adia." Copy the start date from column B, paste it in. Check the role from column C, type it in. Save the doc. Write the URL back into column E by hand. Move to row 3.
- Forty rows. Forty documents. Forty times you cross-check column by column to make sure you didn't mix up Adia's start date with Marcus's.
- Three hours later you've done 22 and your eyes are glazing. You notice row 14 has the wrong title in the doc. You go back and fix it. Start date on row 27 was in the wrong format so it pasted as a serial number. Fix that too.
This isn't a skills problem. Offer letters are supposed to be the easy part — the part that happens in the background while you do actual HR work. The forty-row version of "easy" is a full afternoon you don't have.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads your data directly and talks to Google Docs for you — no template setup, no mail-merge configuration, no add-on to learn.
Open the SheetXAI sidebar and paste this prompt:
For each row in the New Hires tab, create a new Google Doc titled "[Name] Offer Letter" where Name is from column A. Insert the offer letter body using the name from column A, start date from column B, and job title from column C. Write the new doc URL to column E.
What You Get
- A new Google Doc created for each row in the New Hires tab, titled with the hire's name.
- Each doc contains the offer letter body with the correct name, start date, and job title pulled from that row.
- Column E in the sheet is populated with the direct URL to each newly created doc.
- Any row where a field is missing gets flagged in a note rather than creating a malformed document.
What If the Data Is Not Quite Ready
Start dates are in mixed formats — some "May 15, 2026," some "2026-05-15," some just "15 May"
For each row in New Hires, normalize the start date in column B to the format "Month D, YYYY" before generating the offer letter Google Doc. Use column A for the name and column C for the job title. Write the doc URL to column E.
Some rows in column C are missing a job title
For each row in the New Hires tab that has a value in both column A and column B, create the offer letter Google Doc. For any row where column C is blank, use "the role we discussed" as the title placeholder and add "MISSING TITLE" to column F so I can follow up. Write doc URLs to column E.
Offer letter body text lives in a separate tab called Template, not inline
Use the template text in cell A1 of the Template tab as the offer letter body. For each row in New Hires, replace {name}, {start_date}, and {role} with values from columns A, B, and C. Create a new Google Doc per row and write the URL to column E.
Normalize names, fix date formats, exclude rows flagged "On Hold," then generate all docs in one pass
In the New Hires tab, skip any row where column F says "On Hold." For the remaining rows, capitalize the name in column A properly, normalize the date in column B to "Month D, YYYY," and create a Google Doc titled "[Name] Offer Letter" with the offer letter body. Write the new doc URL to column E.
Ask for the cleanup and the generation together — one prompt handles both.
Try It
Get the 7-day free trial of SheetXAI and open your New Hires sheet, then ask it to generate all 40 offer letters at once. When you're done, see how it handles mail-merge template fills or check the Google Docs integration hub for more tasks.
