Sheets 20 million cells: how many Sume jobs can a ledger hold?
Google Sheets doubled its cell limit to 20 million. Work out how many Sume job rows fit by column count, and why GET /v1/jobs stays the system of record.

How many Sume jobs can one Google Sheets ledger hold now that the cell limit doubled? Divide 20,000,000 by your column count. Google's announcement says a spreadsheet can hold up to 20 million cells, up from 10 million, for new, existing and imported files, rolling out from September 10 for Rapid Release and September 28 for Scheduled Release (read 2026-10-04). With a six-column ledger that is about 3.3 million job rows, far more than most teams will ever submit.
The better question is whether a sheet should be the record at all. This post does the arithmetic, then says where the authoritative copy lives.
The row arithmetic
The limit counts cells across the whole spreadsheet, not per tab, so every tab, helper column and empty-but-allocated cell competes for the same total. Divide by the number of columns in your widest ledger tab, then leave room for other tabs.
The figures below assume every column is filled for every row, which is the worst case. They are plain division of the limit Google states, rounded down.
| Columns per row | Rows that fit | Typical columns |
|---|---|---|
| 6 | 3,333,333 | job id, status, created, prompt, artifact URL, cost |
| 8 | 2,500,000 | the six above plus model and idempotency key |
| 12 | 1,666,666 | adds requester, batch id, error code, retry count |
| 20 | 1,000,000 | a wide audit sheet |
What the announcement does not say
The post is about the spreadsheet's cell ceiling. It says nothing about Apps Script runtime or UrlFetchApp quotas, or about how fast a script can read and write a very large range. A sheet that is legal at 3 million rows may still be slow to scan, so plan to read only the rows you need, such as those without a result yet.
Do not assume the larger limit lifts any script quota. The post on UrlFetchApp limits and Sume bulk runs covers those separately.
The sheet is a view, not the ledger
Sume keeps the record of your jobs. GET /v1/jobs lists them, and GET /v1/jobs/:id/status and /result give the state and artifacts, all free reads. If the sheet and the API disagree, the API is right. That lets you treat the sheet as a working view you can rebuild, which removes the pressure to keep every historical row in it.
Spend is the same. GET /v1/usage and GET /v1/balance are free reads for what you have used and what remains. A sheet column for cost is a convenience copy; reconcile it against usage rather than trusting a sum of cells.
A practical layout
Keep the active tab small: only jobs that are not yet terminal, plus the last few days. Archive finished jobs by exporting them and clearing the rows, which keeps scans fast and the cell count low. Terminal statuses are completed, failed and canceled, so a row in any of those is safe to archive once its artifact URL is saved elsewhere.
Store the idempotency key you sent in its own column. If a script run stops halfway, re-running it with the same keys returns the original jobs instead of creating duplicates. For a fuller ledger design in code, see a cost ledger keyed on the job id, and for the export side, exporting usage to CSV. A longer walkthrough of driving jobs from a sheet is in bulk AI videos with Apps Script.
const columns = [6, 8, 12, 20];
for (const c of columns) {
console.log(c + ' columns -> ' + Math.floor(20000000 / c) + ' rows');
}Sources
Related posts
More in Integrations
- Sheets manual calculation: keep paid Sume calls out of formulas
Google Sheets can now pause automatic recalculation. Keep Sume job submits in a menu-driven Apps Script, not formulas, so a recalc never buys a render.
- Hermes daily MCP re-auth nudge vs Sume's one-hour access token
Hermes Agent Desktop added a daily MCP re-auth nudge. Sume access tokens last 3600 seconds with no refresh token, so use an API key for scheduled work.
- Ideogram 4.5 in Runway MCP vs Sume's hosted MCP
Runway's MCP now supports Ideogram 4.5 on paid plans. Sume's hosted MCP exposes generate_image and generate_video, and Ideogram 4.5 is in Sume's image catalog.
- LangGraph interrupt or wait: resume a graph from a Sume webhook
A LangGraph interrupt is for a human decision, not a video render. Pause for approval, then resume the graph from a signed Sume webhook keyed by job_id.
Written by Sume