ReplyLabs
FeaturesPricingCompareFAQUse casesBlogHelpSetup
Sign inGet started free
Get started

Product

  • Install
  • Features
  • Pricing
  • Compare
  • Roadmap

Resources

  • Use cases
  • Blog
  • Glossary
  • Cost calculator

Support

  • Setup Guide
  • Help Center
  • Contact Support
  • Report an Issue
  • Feature Requests

Company

  • Opt Out of Testing

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie list
  • Subprocessors

Empra Consultancy LTD
hello@replylabs.io

ReplyLabs|PrivacyTermsCookiesSubprocessors

© 2026 Empra Consultancy LTD. All rights reserved.

All articles
Blog

Every Google Sheets Limit That Stops a Big Job

350 cells, 30 seconds, 6 minutes, 10 million cells, 20,000 fetches. One page with every Google Sheets limit that ends a large batch, and what each one means.

By ReplyLabs · 5 min read · 20 September 2026

On this page
  • Processing limits, in the order you will meet them
  • The three that cause most of the pain
  • The two IMPORTXML errors, which are not limits at all
  • Which limit am I hitting?
  • The pattern underneath all of them
  • The full set

The short answer. Five numbers cause almost every large-job failure in Google Sheets:

  • 350 cells per AI generate action
  • 30 seconds for a custom function
  • 6 minutes for a script execution, on every plan
  • 20,000 URL fetches per day, consumer; 100,000 on Workspace
  • 10 million cells per spreadsheet, which you will almost never reach

Every limit below is one somebody has lost an afternoon to. They are collected here because in the moment they are indistinguishable: the sheet stops doing the thing, usually without an error, and the next hour goes on working out which wall you hit.

Processing limits, in the order you will meet them

LimitValueApplies toRaisable?
AI generate, per action350 cellsGoogle's built-in AI functionNo
AI long-term generation limitUndisclosedGoogle's built-in AI functionNo, resets in 24h
Custom function runtime30 seconds=MYFUNC() called from a cellNo
Script runtime6 minutesMenu items, triggersNo
Trigger runtime per day90 min / 6 hoursAll time-driven triggersYes, with Workspace
URL fetches per day20,000 / 100,000Apps Script UrlFetchAppYes, with Workspace
URL fetch response size50 MBPer individual callNo
Simultaneous executions30 per userApps ScriptNo
Cells per spreadsheet10 millionThe document itselfNo

The three that cause most of the pain

350 cells, per generate action

Select a range containing AI functions, press Generate, and only the first 350 are produced. No warning, no marker on the 351st cell. If your column is long enough that you do not scroll to the bottom, it looks like it worked.

Full detail, including the separate lockout that stops Generate working at all: the 350-cell limit and the four ways past it.

30 seconds, for anything called from a cell

The gap that catches everyone: a custom function gets 30 seconds, the same code run from a menu gets 6 minutes. Twelve times the budget, decided entirely by how it was invoked. If your function makes a network call per row, calling it from a cell is not viable and no optimisation changes that.

6 minutes, and then a daily budget

The script wall. Chunking with PropertiesService and time-driven triggers is the standard answer and it works, with the caveat almost nobody mentions: it trades the 6-minute wall for a daily trigger budget of 90 minutes on consumer accounts and 6 hours on Workspace. Real relief, still finite.

Both covered in the Apps Script 6-minute limit.

The two IMPORTXML errors, which are not limits at all

They belong here because they are diagnosed at the same moment and confused with each other constantly.

  • Could not fetch url means the page was never retrieved. Your XPath was never evaluated, so rewriting it cannot help. Usually the site is refusing requests from Google's servers. See what it means and what fixes it.
  • Imported content is empty means the page was retrieved and your XPath matched nothing. Usually a /tbody/ copied from DevTools that does not exist in the source HTML, or content that only appears after JavaScript runs. See the real causes.

One is a network problem you cannot fix from the spreadsheet. The other is a formula problem you can fix in a minute. Telling them apart first saves the afternoon.

Which limit am I hitting?

SymptomLimitRead this
Part of a column filled, rest blank350-cell action capThe 350-cell limit
Generate button does nothingLong-term generation limitWhy the AI function is not working
AI function missing entirelyNot a limit: plan, admin, languageWhy the AI function is not working
Works on one cell, fails filled down30-second custom functionThe 6-minute limit
"Exceeded maximum execution time"6-minute script runtimeThe 6-minute limit
Script stopped working today, no code changeDaily fetch or trigger quotaThe 6-minute limit
Could not fetch urlNot a limit: the site refusedCould not fetch url
Imported content is emptyNot a limit: XPath matched nothingImported content is empty

The pattern underneath all of them

Every limit on this page exists for the same reason. A spreadsheet is a document that recalculates in the foreground, attached to a browser tab, shared by everyone in an organisation. The limits are what stop one person's fill-down from consuming a shared service.

Which means they are not obstacles to be engineered around so much as a statement about what the tool is for. A spreadsheet is an excellent place to keep a list, look at results, and decide what to do next. It is a poor place to execute fifty thousand API calls, and the limits are Google saying so.

The move that resolves all of them at once is to keep the sheet and move the execution. That is what ReplyLabs does: the spreadsheet stays the interface, the batch runs on infrastructure built for batches, results come back into the cells with a per-row status, and you are charged only for rows that succeed. How many rows you can actually process works through the arithmetic for each approach.

The full set

  • The 350-cell limit in Google Sheets AI
  • Why the AI function is not working
  • IMPORTXML: could not fetch url
  • IMPORTXML: imported content is empty
  • The Apps Script 6-minute limit
  • How many rows can you run AI on?
  • Chaining enrichment steps
  • What 1,000 enriched leads cost
  • What a normal coverage rate looks like

Limits sourced from Google's AI function documentation and the Apps Script quota reference, checked August 2026. Google states these are subject to change without notice.

Frequently asked questions

10 million cells across all sheets in one spreadsheet. It is rarely the limit that stops a batch job; the processing limits bite thousands of times sooner.
On this page
  • Processing limits, in the order you will meet them
  • The three that cause most of the pain
  • The two IMPORTXML errors, which are not limits at all
  • Which limit am I hitting?
  • The pattern underneath all of them
  • The full set

Keep reading

All articles
Blog

Why Enrichment Coverage Is Never 100%, and What Is Normal

Blog

What 1,000 Enriched Leads Actually Cost, Line by Line

Blog

Scrape, Summarise, Score: Multi-Step Enrichment in Sheets

Try it on your own list

ReplyLabs runs from a sidebar inside Google Sheets. Start free with $20 credit, no card needed.

Get started free