Control quota usage with focused refreshes
Use the selective SheetsFinance refresh actions when you can, and use formula-level gates and helper cells when you need tighter control over what loads and how often—so large sheets stay within plan and platform quotas.
Daily limits apply across Google Sheets and Excel (Basic 10,000; Investor 25,000; Analyst 100,000; Pro and Team 500,000). Google Sheets also enforces its own account-level external request quota. Full numbers and platform differences are in Limits.
Built-in refresh options and tradeoffs
The SheetsFinance Refresh submenu in Google Sheets and Excel offers three actions. Prefer the narrowest action that fixes the problem.
Refresh Real-time — Reloads only real-time functions on the active sheet. Use this when you need latest prices and can leave historical or fundamentals alone.
Refresh Errors — Reloads only cells showing
#ERROR!or#N/A. Use this after rate limits or temporary failures so successful cells are not re-requested.Refresh All — Reloads every SheetsFinance function in the active spreadsheet. This is the broadest option and can take a while on dense workbooks; reserve it for widespread unexpected failures, not routine updates.
Menu steps and screenshots are in Refresh. Hitting Refresh All repeatedly is a common way to burn through a daily allowance; one full refresh after a quiet period is usually enough to bring a sheet current.
Why formulas reload more often than you expect
Any input change can retrigger a SheetsFinance call. Dynamic spreadsheet functions such as TODAY(), NOW(), and RAND() recalculate often; if they sit inside many SF formulas, each recalculation can consume quota again.
Put dynamic values in one helper cell and reference that cell everywhere:
B1: =TODAY()
=SF_TIMESERIES("AAPL", $B$1-365, $B$1, "1week", "high", "NH")
=SF("MSFT", "historical", "close", $B$1-30)Google Sheets also background-refreshes open files, including sheets you are not looking at. Close workbooks you are not using, and split heavy dashboards into separate files so idle analysis is not refreshing beside a live watchlist. Details are in Performance Tips.
Force a focused recalculation with a dummy cell
When you want a manual reload of only some formulas—without Refresh All—append a spare refresh cell to the options argument. Changing that cell changes an input, so only formulas that reference it recalculate.
Put a number such as
1in a spare cell (for exampleB1).Append it to options:
"NH&"&B1when you already pass options, or""&B1when options would otherwise be empty.Change
B1(for example to2) whenever you want that group to reload.
=MAX(SF_TIMESERIES($D2, $A$1-91, $A$1, "1week", "high", "NH&"&B1))Share one refresh cell across a related block, or use separate cells per column or section so you can refresh prices without reloading long history. Excel must keep the dummy value inside the existing options argument; Google Sheets can also accept extra dummy arguments beyond the documented signature.
The same pattern is especially useful on mobile, where the add-on refresh menu is not available—see Refresh formulas from mobile Google Sheets and Excel.
Gate heavy formulas so they only run on demand
Wrap SheetsFinance calls in IF (or similar) tied to a checkbox or 1/0 cell so inactive blocks do not run at all.
=IF($B$1=TRUE, SF_TIMESERIES($D2, $A$1-91, $A$1, "1week", "high", "NH"), "")When the control is off, those cells stay empty and do not use quota. When it is on, the functions load normally. Use separate controls for real-time, history, technicals, and screeners so opening a file does not fire every expensive call at once.
Drawback: gated cells do not keep showing the last successful values while off—they clear to your fallback until you turn the control back on.
Reduce how much each refresh has to do
Fewer, denser calls mean each intentional refresh costs less.
Batch symbols — Pass a range into one
SFcall instead of one formula per ticker when the function supports batching. Time-series style functions such asSF_TIMESERIESandSF_TECHNICALcannot batch across symbols. See Batch symbols to reduce formula calls.Chain metrics — Request several fields in one call with
&(for example"price&volume&marketCap") instead of separate formulas per field.Request wider year ranges once — Prefer a single year-range call over many single-year calls where the function supports it.
Return only what you display — Use
NHto drop headers when nesting aggregations, andINDEXorARRAY_CONSTRAINwhen you need one cell or a short window from a multi-row result. See Get a single value from a multi-row function.Split long high-frequency windows — Intra-day and some technical ranges are limited per call; stack smaller windows with
VSTACKrather than one oversized request. See Stack limited date ranges with VSTACK.
Practical combinations
Match the control pattern to the job.
Goal | Approach |
|---|---|
Update live prices only | Refresh Real-time, or a dummy refresh cell only on real-time formulas |
Retry failures without reloading successes | Refresh Errors |
Reload one dashboard section on demand | Shared dummy refresh cell for that section |
Keep heavy history off until needed | Checkbox |
Stop idle quota burn | Close unused files; one |
Recover a stuck workbook | Refresh All once, then switch back to selective patterns |
What is next
For mobile-specific refresh workarounds, including Apps Script scheduling on Google Sheets, see Refresh formulas from mobile Google Sheets and Excel. For plan ceilings, Google’s external request cap, and rate-limit recovery, read Limits.