Docs/Start/Formulas

Formulas

The complete =VERVE() reference — argument grammar, picking a field by path, filling a column from a range, nesting, and the two helper functions.

View as Markdown

One function reaches the whole catalog. This page is its full grammar: what each argument position means, how to pick a single value out of a response, how a range becomes a filled column, and what the cell says when something is wrong.

Every example below is shown for both platforms — the formula is the same, only the name differs. Pick your tab and paste.

The grammar

=VERVE("source", …required inputs, …"name", value, "field", "path")

Three zones, always in that order:

  1. The source name, as a string. "weatherforecast", "dnslookup", "goldprice". The sidebar and autocomplete both list them, so there is nothing to memorise.
  2. Required inputs, positionally, in the order the source's reference page lists them. Plain strings, numbers, or cell references.
  3. Options, as a name followed by its value, repeated. The same shape as SUMIFS. "field" is one of these, and it is the one you want on essentially every formula — see picking a value.
=VERVE("weatherforecast", "London", "field", "tempC")
=VERVE("currencyconverter", 100, "USD", "EUR", "field", "convertedValue")
=VERVE("goldprice", "currency", "EUR", "field", "ounce")
=VERVE("agecalculator", A2, "timezone", "Europe/London", "field", "age_breakdown.years")

Option names are case-insensitive. An option the source does not have is an error that names the ones it does, rather than a silently wrong answer. If a required input also appears as an option pair, the positional value wins.

Why the name and value are separate arguments

A single "name=value" string would let your own data decide where the argument ends. A base64 payload ends in =, so =VERVE("base64", "SGVsbG8=", "decoded") once parsed SGVsbG8 as an option name, dropped the payload and encoded the word decoded instead — with an argument count that looked perfectly valid. Splitting the pair means the boundary comes from the schema and never from the content.

Picking a value with "field"

A cell holds one value, so a formula should ask for one value. "field" takes a path and the cell holds exactly that:

=VERVE("weatherforecast", "London", "field", "tempC")

The paths are listed on the source's reference page and in the sidebar beside each source. weatherforecast offers these, all at the top level:

PathValue
tempC13.3
tempF55.9
windMph4.7
windDirW
feelslikeC13
pressureMb1022

Not every response is flat. Where one nests, the path is dotted — exactly as the reference page writes it:

=VERVE("binlookup", A2, "field", "issuer.name")
=VERVE("dnslookup", A2, "field", "records.SOA.nsname")
=VERVE("iplookup", A2, "field", "country")

The last one is the reminder: iplookup returns country, city and timezone at the top level, not under a location. Read the path off the reference page rather than guessing at the shape — a path that isn't there costs a credit before it tells you so.

No source has an input or a response field called field, so the reserved name can never be shadowed by a real one.

Exploring a source you haven't used before

Omit "field" entirely and the whole response spills into two columns, every path beside its value. It is the quickest way to see what a source returns — but it is a scratch move, not a formula to keep: it occupies a block of cells, and one lookup's worth of credits buys a table you then have to point a real formula at anyway.

Filling a column from a range

Pass a range where a single value would go and every row resolves. "field" is required here, not optional — a spilled column has one value per row by definition:

=VERVE("timezonelookup", A2:A9, "field", "timezone")

In Google Sheets that is one batched request that spills down the column. Nine rows, one call — quicker and cheaper than nine formulas, and the output grows when you add a row to the range.

In Excel, write the formula against a single cell and drag it down, or select the input column in the sidebar and use Values, which fetches the whole selection in one pass.

Scalars alongside a range are broadcast to every row, so only the varying input needs to be a range:

=VERVE("currencyconverter", A2:A20, "USD", "EUR", "field", "convertedValue")
Formula or Values?

A =VERVE() formula is live — it recalculates, and each recalculation is a fresh lookup that spends credits. For a one-off enrichment of a long column, the sidebar's Values mode writes static answers instead: one batched request, and nothing recurring. Fills over 50 rows confirm with a credit estimate before they run.

Nesting

The formula returns an ordinary value, so it goes anywhere a value goes:

=SUM(VERVE("goldprice", "field", "ounce"), B2)
=ROUND(VERVE("currencyconverter", A2, "USD", "EUR", "field", "convertedValue"), 2)
=IF(VERVE("weatherforecast", "London", "field", "tempC") > 20, "Warm", "Cool")

This is the other reason "field" belongs on every formula: a function that expects a number gets a number. Charts, pivot tables, sparklines and conditional formatting all read those cells directly, with no extra plumbing.

The two helper functions

Most work goes through the main function. Two shorthands exist for common shapes.

A field by query string. When you already have parameters written out, this skips the positional-argument rules entirely:

=VERVEFIELD("iplookup", "ip=8.8.8.8", "country")

A currency conversion. The amount, the source currency, the target currency — nothing else:

=VERVEFX(100, "USD", "EUR")

Both return a single value, so neither takes a "field". VERVEFX returns the converted amount as a number, never a substituted or partial one: if your plan withholds the value, the cell says so rather than showing something that is not it.

The same function, two names

Excel puts the functions in a VERVE namespace; Google Sheets does not.

DoesGoogle SheetsExcel
Read a source=VERVE(…)=VERVE.CALL(…)
Read a field by query string=VERVEFIELD(…)=VERVE.FIELD(…)
Convert a currency=VERVEFX(…)=VERVE.FX(…)

Arguments, "field", error text and billing are identical. Two behavioural differences are worth knowing:

  • Range fill. Sheets resolves a range in one batched call and spills. Excel resolves a single cell per formula, so drag it down or use the sidebar's Values fill for the batched path.
  • Long values. A value too large for a cell is truncated and marked … [truncated] rather than dropped — the limit is about 50,000 characters in Sheets and 32,767 in Excel.

What a cell says when it fails

Failures come back as text, beginning with #ERR:

Cell readsCause
#ERR Connect first: Extensions ▸ VerveSheetsNo credential stored yet. Excel words it #ERR Not connected — connect in the VerveSheets pane.
#ERR weatherforecast needs cityA required input is missing, or points at a blank cell. Every required name is listed.
#ERR No "zone" in agecalculator. Try: timezone, fieldAn option name the source does not have. The message lists the valid ones.
#ERR Use "name", value pairs — "metric" has no nameAn unpaired value. A trailing name with no value is treated as omitted, not as an error.
#ERR No field "tempc"The path is not in the response, on a range fill. Paths are case-sensitive.
#ERR Replace <city> with a cell or valueThe sidebar's preview template was copied before the placeholder was filled in. Where the source has a curated sample the message ends — e.g. London.
#PREMIUM(riskScore)The field exists, but your plan does not include it.
#PREMIUM(deep)An option was dropped by the plan gate, so the answer would be to a different question than the one you asked.
One message is not #ERR text in Sheets

A single-cell formula whose "field" path is missing from the response is the one failure Google Sheets raises as a real error — No data point "tempc". — readable by hovering the cell. Excel returns it as #ERR No data point "tempc" like everything else, and a range fill on either platform writes #ERR No field "tempc" into the row. Same cause, three spellings.

They are text and not real spreadsheet errors for one reason: Excel cannot render a custom message on an error value — a failure would be a bare #VALUE! with nothing to read. Text shows the same sentence on both platforms.

The cost of that choice: IFERROR() does not catch them. To branch on failure, test for the prefix instead:

=IF(LEFT(A2, 4) = "#ERR", "retry", A2)

Wrap that in IFERROR() as well if a missing path is possible — in Sheets that single case is a real error and only IFERROR() catches it.

A missing path is an error rather than a blank on purpose. A blank cell after a paid lookup looks identical to a source that genuinely returned nothing — and on a filled column that is a whole column of silence with the credits already spent.

Credits

One lookup, one credit charge — per cell, or per row on a filled range. Costs vary by source and are listed on each source's page and in all sources.

Two things spend more than people expect:

  • A live formula recalculates. Every recalculation is a new lookup. For data that does not need to move, use the sidebar's Values fill.
  • A dragged formula is one call per row. In Sheets, a range argument is a single batched call instead — prefer A2:A9 over nine copies of the same formula.

The sidebar shows your remaining balance while you work, and analytics breaks usage down by source afterwards.

Next

The sidebar writes these formulas for you and fills selections without typing. All sources lists the catalog, each with its inputs and the paths you can pass to "field".

Was this page helpful?

Last updated