These functions use memoization: as long as the arguments stay the same, the spreadsheet engine returns cached results without re-running the function.
The easiest fix is the Recalculate all formulas button in the sidebar (Pro tab → bottom of the page). It forces an immediate refresh of all custom functions across all sheets — useful after any formatting change.
To trigger recalculation automatically when a value in the range changes, pass the range a second time as an extra argument without quotes. The function ignores it, but its presence triggers re-evaluation:
=COUNTBACKGROUNDCOLOR("B2:B21", "B2", B2:B21)
Note: there is currently no automatic way to trigger recalculation when a color (background or font) changes — this is a Google Sheets limitation. Use the Recalculate button instead.
These functions support Google Sheets' built-in formula autocomplete. Start typing = followed by the function name — matching suggestions appear in a dropdown automatically.
Once you select a function and type the opening parenthesis (, a tooltip appears showing the expected arguments in order.
For the full description and parameter list, open the formula help panel:
PC Shift + F1 | Mac Shift + Fn + F1
If autocomplete doesn't show the add-on functions, the add-on may not be installed or enabled for this spreadsheet.
Yes. Every function in this add-on works on ranges of 30 cells or fewer without a Pro license — no sign-up required.
For ranges larger than 30 cells, an active Pro license is required. New users automatically receive a 7-day free trial with full access to all functions on unlimited ranges.
If a formula exceeds the free limit, the cell will show an error message explaining how to activate a license.
Reading cell colors requires a Range object (e.g. range.getBackgrounds()). The only way to pass a range to a custom function is as a quoted string — without quotes, Google Sheets passes the values of that range instead, making it impossible to read formatting.
A #NAME? error means Google Sheets can't find the function. Double-check the spelling. Use the formula help box to verify the function is recognized:
PC Shift + F1 | Mac Shift + Fn + F1
If the function never appears in autocomplete, the add-on may not be installed or enabled for this spreadsheet.
Because ranges are passed as strings, they don't update when you fill down or across. You can work around this with ROW() to fill vertically:
=SUMSTYLE("A"&ROW()&":J"&ROW(), "bold")
To fill horizontally, use CELL("address", ...):
=COUNTBACKGROUNDCOLOR(CELL("address",A13)&":"&CELL("address",A25), "A14")
See also this example spreadsheet.
Each formula requires a separate round-trip to the Apps Script server to read cell formatting. The IS* boolean functions (ISFONTSTYLE, ISBGCOLOR, ISFONTCOLOR, ISCOLORANDSTYLE) are useful in two situations:
1. Style/color check and values are in different columns. The scalar functions (SUMSTYLE, SUMFONTCOLOR…) can only sum the styled cells' own values. The IS* functions let you apply a style/color check from one column to values from another:
=SUMPRODUCT(ISFONTSTYLE("A2:A200","bold")*1)
=SUMPRODUCT(ISBGCOLOR("A2:A200","C1")*B2:B200)
=SUMPRODUCT(ISCOLORANDSTYLE("A2:A200","C1","bg","bold")*B2:B200)
2. Consolidating many separate formulas on the same range. If you have many COUNTSTYLE/SUMSTYLE/… formulas covering the same range, you can replace them with one ISFONTSTYLE formula:
Other tips:
- Use specific ranges (
"A1:A100") rather than whole columns ("A:A") — whole columns force the function to scan thousands of empty cells. - Avoid placing the same range formula in dozens of cells — consolidate into one formula where possible.
- Use the Recalculate button in the sidebar rather than relying on automatic recalculation after formatting changes.
See also: Google Apps Script quotas.
Google imposes a 30-second execution limit per custom function call. If a formula exceeds this, it returns an error like "Service Spreadsheets timed out" or "Exceeded maximum execution time".
Common causes:
- Whole-column ranges —
"A:A"scans every row in the sheet (up to 10 million cells). Always use a bounded range like"A1:A500". - Cross-sheet functions on large workbooks —
SUMALLSHEETSetc. read the same range on every sheet. Exclude irrelevant sheets using theexcludedargument, or reduce the number of sheets. - Many formulas recalculating simultaneously — see the tip above about consolidating with SUMPRODUCT.
See also: Google Apps Script quotas and best practices for custom functions.
No. Google Sheets does not allow custom functions to be called from within LAMBDA-based functions such as MAP, BYROW, BYCOL, or REDUCE.
The reason is architectural: LAMBDA functions run entirely inside the Sheets calculation engine, which has no access to the Apps Script runtime. Custom functions need the Apps Script runtime to read cell formatting (colors, font styles), so the two environments are fundamentally incompatible.
There is currently no workaround for this limitation.