AWRA OpsHub Search

Raw Means It Is Not a Formula

Every value this connector writes to a spreadsheet is stored exactly as given, never interpreted. That is one query parameter, and it is the difference between exporting your supplier list and executing it.

Integrations & Data AWRA OpsHub Team 11 min read

A spreadsheet is the only export format that runs code. Every other one — a comma-separated file, a document, a database row — holds text. A spreadsheet cell holds text unless the text starts with an equals sign, in which case it holds an instruction. Writing untrusted data into one is therefore a slightly different activity from writing it anywhere else, and there is a single parameter that decides which activity you are doing.

Two ways to write a cell

The interface offers a choice. Write values as though a person had typed them, or write them exactly as given.

A value of Typed by a person Stored as given
A supplier name The name The name
A phone number with a leading zero A number, the zero gone The text you sent
A long reference of digits Scientific notation The reference
Something that looks like a date A date, reformatted The text you sent
Text beginning with an equals sign A formula, evaluated The text you sent

Only the first row is the same in both columns. Every other one is a value that arrives correct one way and altered the other.

Four of those five are data-quality problems. The fifth is a security one, and it is the same setting.

Four of these are data-quality problems and one is a security problem. Same setting.
Four of these are data-quality problems and one is a security problem. Same setting.

The security half

A value beginning with an equals sign — or one of a few other characters spreadsheets treat as introducing a formula — is not text when interpreted. It is an expression, and it runs when the sheet opens.

The path is not exotic. A supplier fills in their company name during prequalification. It reaches your workspace. It is exported to a spreadsheet. Somebody in finance opens it.

At no point does anybody with malicious intent need access to anything of yours. They typed into a form you offered, and the formula evaluated in a spreadsheet on somebody else's machine — which is why this class of problem is usually named after the export format rather than after the application.

Writing raw removes it entirely. Not by escaping, not by stripping characters, not by detecting anything — by never entering the interpreting mode at all. A value beginning with an equals sign is stored as a piece of text beginning with an equals sign, visible and inert.

The data-quality half

The other four rows in that table are the ones people meet daily, and they are the reason spreadsheet exports have a bad reputation.

A phone number with a leading zero is a number as far as a spreadsheet is concerned, and numbers do not have leading zeros. A long numeric reference becomes an approximation in scientific notation. Anything that resembles a date is reformatted into whichever date format the sheet is set to.

All three are silent. The value arrives, it looks plausible, and it is not what you sent. Somebody notices the day they try to match the export against something else and a third of the rows do not join.

Raw writing means what you sent is what is there. The sheet becomes a faithful export rather than an interpretation of one, and the cost is that a column of numbers arrives as text — which is a visible, fixable, one-click problem rather than an invisible one.

The scope, and why it is narrow

A separate property worth pointing at, because it is the same one used by the document archive connector.

The permission requested reaches only files this application created. Not your Drive, not your other spreadsheets — the ones it made.

That works here because the connector creates the spreadsheet itself. It is not pointed at one of yours; it makes one, remembers it, and writes into it. Which is what makes the narrow permission sufficient rather than a limitation dressed up.

The consequence is worth stating: this connector cannot write into an existing spreadsheet of yours, and it cannot read one. If the model you wanted was a sheet you already have with formulas around it, the honest answer is that the sheet it makes is the destination, and your formulas go in another tab that references it.

One error message that names the cause

A small thing that saves an afternoon.

When the spreadsheet cannot be created, the message says to check that the Sheets interface is enabled on the Google project.

That is the overwhelmingly common cause, and it is invisible from every angle a person would look at: the credential is valid, the account is right, the permission was granted, and the request is refused because a specific interface has not been switched on in a console somebody visited weeks ago.

Naming a likely cause in an error message is a small editorial act with a real return. The provider's message tells you what was refused; the connector can tell you what usually causes that, and the second is what shortens the search.

What is in place, layer by layer

How values reach a cell

Written raw, never interpreted

Every value is stored exactly as sent, so nothing is evaluated as a formula and nothing is reformatted into a number or a date.

Built in

Formula execution removed structurally

A value beginning with an equals sign is inert text rather than an expression, because the interpreting mode is never entered.

Built in

Leading zeros and long references preserved

Phone numbers and document references arrive as they are rather than as approximations, so an export can be matched against its source.

Built in

A scope limited to what it created

The permission reaches only files this connector made, which is sufficient because it creates the spreadsheet itself.

Built in

The spreadsheet created, not adopted

A sheet is made and remembered rather than pointed at one of yours, which is what makes the narrow permission enough.

Built in

Ranges encoded for the address

Tab names travel inside the request address and are encoded, so a tab with a space or a punctuation mark in its name still resolves.

Built in

A likely cause named on failure

Where a refusal usually means one specific thing, the message says so, because the provider can only report what was refused.

Built in

Tokens encrypted at rest

Both credentials stored through encrypted casts on the row for one workspace, and never written into a log line.

Built in

Because the connector creates the spreadsheet, it cannot write into one you already have and cannot read any of yours. Formulas of your own belong in another tab referencing the written one.

Three positions held on purpose

  • Values are written raw rather than sanitised. Removing the interpreting mode is stronger than detecting dangerous input, because it does not depend on a list of characters being complete.
  • A faithful export beats a convenient one. Numbers arriving as text is a visible one-click problem; a reference silently rendered in scientific notation is found weeks later by somebody trying to match two files.
  • The connector creates its own spreadsheet rather than asking for access to yours. It keeps the permission narrow, and the limitation that follows is stated rather than worked around with a wider scope.

Five questions about exporting to a spreadsheet

Can data in our records execute in a spreadsheet?

A good answer sounds like

No, structurally.

What ours actually is

Values are written raw, so a formula-looking value is inert text rather than an expression.

Do phone numbers keep their leading zeros?

A good answer sounds like

Yes.

What ours actually is

Nothing is reinterpreted as a number, a date or anything else.

What can the connector see in our Drive?

A good answer sounds like

Only what it made.

What ours actually is

The permission reaches files this application created, which is why it creates the spreadsheet itself.

Can it write into a sheet we already have?

A good answer sounds like

No — say so.

What ours actually is

It creates its own. Your formulas go in another tab referencing it.

What if the export fails to set up?

A good answer sounds like

A named likely cause.

What ours actually is

The message points at the interface not being enabled, which is the usual reason and is invisible otherwise.

Our take

Formula injection is the security problem that keeps working because nobody owns it. It is not a flaw in your application — your application stored a string faithfully. It is not a flaw in the spreadsheet — it evaluated a formula, which is what it is for. It lives entirely in the gap between them, and the gap belongs to whoever wrote the export. One parameter closes it, it costs nothing, and it also removes the four data-quality failures that make spreadsheet exports untrustworthy. If you write a spreadsheet anywhere, this is a ninety-second check worth doing today.

An export you can match against its source

Values stored exactly as sent — no evaluated formulas, no lost leading zeros, no references quietly rendered in scientific notation.

Talk through register exports

Frequently asked questions

Can a supplier name entered in our system run code in a spreadsheet?

No. Values are written raw, which means the spreadsheet stores them as given rather than parsing them the way it would parse typing. A value beginning with an equals sign arrives as visible, inert text rather than as a formula.

Why do numbers appear as text in the sheet?

Because nothing is reinterpreted. That is deliberate — it is what keeps leading zeros on phone numbers, stops long references becoming scientific notation, and prevents anything date-like from being reformatted. Converting a column afterwards is one click; recovering a mangled reference is not.

Can we point this at a spreadsheet we already use?

No. The connector creates its own, which is what allows it to run on a permission limited to files it made rather than access to your Drive. If you want your own formulas around the data, put them in another tab that references the written one.

What can the connector see in our Google Drive?

Only the spreadsheet it created. The permission requested covers files this application made and nothing else, so your other documents are not merely untouched — they are unreachable.

The connection test fails to create the spreadsheet. What should we check?

Whether the Sheets interface is enabled on the Google project, which is what the message points at. It is the usual cause and it is invisible from every other angle: the credential is valid, the account is right and the permission was granted.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center