← /for/

Scratch for Google Sheets

Your AI cleans and rewrites whole Google Sheets tabs as files on your computer: every row, not the first 200, about 10x faster than over an API. You review each cell as a diff, and only the cells you approve are written back. Try it now free → or book a demo with Curtis

A sheet with four thousand rows is where your data lands and where cleanup stops. Sorting and find-and-replace handle the mechanical passes. The pass you want, normalize every company name, sort free-text notes into a category column, rewrite four thousand product descriptions, needs judgment on every row. So it becomes an Apps Script that does exactly what you spelled out, or an afternoon of copying blocks into a chat window and pasting the answers back into the grid.

Scratch pulls the tabs down as files on your computer. Your AI reads and rewrites every row there, not a sample, and about 10x faster than it works over the API, because it reads the files directly instead of making a request per row. Every change comes back as a diff next to the original value. Only the cells you approve are written to your sheet.

What Scratch edits in Google Sheets

How it works

  1. Connect and hand Scratch your spreadsheet URLs. Sign in with Google. Scratch asks for the spreadsheets scope and nothing else, so it cannot list or browse your Drive: you paste the URL of each spreadsheet it may touch. Add or remove URLs later from Edit Connection.
  2. Pick tabs and pull. Each tab becomes a table and row 1 becomes the field names. Scratch adds one managed column, Scratch ID, in column A, so row identity survives sorting, filtering, and reordering. It arrives gray, with the header row frozen and a warning on the range.
  3. Your AI edits the files. Open the folder in the agent you already use. Try a prompt on 50 rows, then let it run the whole tab. Your sheet is untouched while this happens.
  4. You review every diff and publish. In the Scratch desktop app each changed cell sits next to its original value. Approve what ships, and Scratch writes only those cells. Everything you did not approve keeps its value and its formatting.

What teams use it for

Scratch can also build the spreadsheet

Sheets is where data becomes shareable, so Scratch exports into it as well as out of it. Send what you pulled from Sanity, Pipedrive, Airtable, Stripe, or Supabase into a spreadsheet Scratch creates for you: you name the file, every table becomes its own tab with typed columns, checkbox and dropdown validation, date and currency formats, and the links between tables kept as references. A CRM in a sheet is a report anyone on the team can open.

Why not an Apps Script?

A script does exactly what you spelled out and nothing smarter. It cannot decide that this row's category is Manufacturing and that one's is Logistics, and it writes straight into the live sheet with no review step. The alternative, pasting blocks of rows into a chat and the answers back, gives you judgment but no record of what changed and no way to reject one row out of fifty.

Scratch puts an agent on the whole tab and holds the result as a diff. The agent can change any cell; only you commit it. Every published change is reversible per row.

What's safe, and what changes in your sheet

Scratch adds exactly one column to a connected tab: Scratch ID in column A. It carries the row identity, so do not delete or move it. If it goes missing, Scratch stops with an error that tells you how to put it back rather than guessing which row is which. Row 1 has to hold headers; columns with an empty header are ignored entirely. Renaming a header creates a new field, while reordering columns does not. Cells hold single values, so a list or an object fails the publish loudly instead of being flattened into text. Approved changes are written cell by cell, so untouched cells keep their values and formatting. The Sheets API has no conditional writes, so publish batches stay deliberately small; avoid reordering rows while a publish is running. You bring your own AI: Scratch holds no AI credentials and runs no model, so you sign into Claude, Claude Code, Codex, Cursor, Copilot, Cline, or Windsurf the way you already do. The workspace is git-backed from the first pull, and Scratch is SOC 2 compliant.

Questions Google Sheets users ask

Sheets has Gemini built in. Why this?

Gemini works inside the live sheet, a prompt or a formula at a time, and what it writes lands straight in the grid. There is no batch of proposed changes to read as a diff, approve in part, or reverse per row afterward. Scratch adds exactly that: your own agent runs the whole tab against local files, and nothing reaches the sheet until you have approved it cell by cell.

Which of my spreadsheets can Scratch see?

Only the ones whose URLs you gave it. Scratch asks Google for the spreadsheets scope and no Drive scope at all, so it cannot list your files, browse folders, open a spreadsheet you did not hand it, or delete anything. You paste URLs when you connect, and you edit that list later from Edit Connection.

What is the Scratch ID column?

It is how Scratch knows which row is which. A row's position is not an identity: sort the tab and row 400 becomes row 12. So Scratch manages one column in position A, headed Scratch ID, and stamps a short id into it. Rows you add by hand get an id on the next pull. The column is styled gray with the header frozen and a warning protection on the range, so nobody edits it by accident.

Will it overwrite my formatting or my other columns?

No. Approved changes are written cell by cell, so a cell nobody touched keeps its value and its number format. Columns whose header row is empty are invisible to Scratch and are never read or written.

Can it add and delete rows, or only edit them?

All three. New records append below the last row of data. Deletes are applied from the bottom up, so the rows above never shift out from under the operation.

Does it work on a sheet without a header row?

No. Field names come from row 1, so a tab needs headers before Scratch can connect it. Headers that reduce to the same name (Company Name and company-name) are reported as an error rather than silently renamed.

How does it connect?

Google OAuth, with the spreadsheets scope only. You approve the consent screen and paste the spreadsheet URLs you want available. No service account, no API key to store.

See it on your own sheet

Pull one tab, run a prompt on 50 rows, and read the first diff before you decide anything. Try Scratch free, or book a 30-minute demo on your own spreadsheet.

Use AI to edit Google Sheets

Scratch connects your AI agent to Google Sheets. Pull a folder, let the agent edit the files, review every diff, and publish only what you approve.

See it run on your own content.

Curtis runs these calls himself. Thirty minutes, no pitch, no slides. He connects your platforms live and shows you your content as an editable, reviewable diff. Bring anything sticky: a refresh, a migration, or a rebrand.

Book a 30-minute demo call → or try it free · mac · windows · linux

cookies

strictly necessary
required for the site to work. always on.

analytics
google analytics & posthog — anonymous usage, so we can improve the site.