Docs

Every function, with an example you can paste and the result you should get back. Work through it top to bottom and you will have exercised the whole product.

Before you start

  1. Install the add-on from the Google Workspace™ Marketplace, open a spreadsheet, and choose Extensions → Bulk AI Studio → Open Bulk AI Studio.
  2. Sign in from the sidebar. This is required before any formula works — Google runs custom functions anonymously, so the sidebar is the only place that can establish who you are.
  3. Paste the sample data below into a blank sheet, starting at cell A1.

Sample data

Download the test workbook — a fictional retailer’s support tickets and prospect list, with every formula below already written out and the result to expect beside it.

In Google Sheets™: File → Import → Upload. The AI formulas will not run in Excel, only in Sheets with the add-on installed.

Or paste this by hand. Column A is a company name, column B is a customer message. Every example below refers to row 2.

RowAB
1CompanyMessage
2ShopifyMy order 8871 arrived cracked. I emailed sara@example.com twice and heard nothing. Refund please.
3StripeThe new dashboard is fantastic — checkout setup took ten minutes.
4NotionCannot export to PDF since the update. Third time this month.

Every function here starts with AI_. Google Sheets has its own built-in =AI(), which will appear first in the autocomplete when you type =AI. That one is Google’s — it answers from Gemini, without sources, and does not use your credits. Ours is =BAI_PROMPT().

Working with text you already have

These read the cell you point them at. They do not search the web.

=BAI_PROMPT(prompt)

Free-form instruction. Named BAI_PROMPT because Google ships its own built-in =AI() in Sheets, which would shadow ours.

Paste thisExpect
=BAI_PROMPT("Write a one-line apology for: " & B2)A short apology referring to the cracked order.
=BAI_CLASSIFY(text, labels)

Sorts a cell into one of your labels. Point it at a range you have already labelled and it reuses exactly those, so a new row cannot invent a category.

Paste thisExpect
=BAI_CLASSIFY(B2, F$2:F$40)refund — one of the labels already in column F
=BAI_EXTRACT(text, field)

Pulls one field out of the cell's own text. Empty if it is not there.

Paste thisExpect
=BAI_EXTRACT(B2, "email address")sara@example.com
=BAI_TRANSLATE(text, language)

Translates the cell. Arabic and Urdu are tuned rather than left to the model's defaults.

Paste thisExpect
=BAI_TRANSLATE(B2, "Arabic")The message in Modern Standard Arabic, right-to-left.
=BAI_SUMMARIZE(text, max_words)

Shortens the cell to at most the number of words you give.

Paste thisExpect
=BAI_SUMMARIZE(B2, 8)Eight words or fewer.
=BAI_SENTIMENT(text)

One of positive, negative, neutral, mixed.

Paste thisExpect
=BAI_SENTIMENT(B2)negative
=BAI_TABLE(text, fields)

Several fields in one call, spilling across columns. Point it at your header row and each column is filled using its own heading. Three fields cost one credit, not three.

Paste thisExpect
=BAI_TABLE(B2, D$1:F$1)One cell per heading in D1:F1.
=BAI_ASK(prompt, range)

Asks about several cells at once, so the model sees the whole row rather than one value.

Paste thisExpect
=BAI_ASK("Is this customer at risk of churning?", A2:B2)A judgement that takes both the company and the message into account.

Looking things up on the web

These run a live Google search. They cost 25 credits instead of 1, because each one is a real search rather than a recollection — and they are available on paid plans.

=BAI_ENRICH(entity, fact)

Looks up one fact about the thing named in the cell. Returns NOT_FOUND rather than guessing.

Paste thisExpect
=BAI_ENRICH(A2, "CEO")Tobias Lütke
=BAI_ENRICH(entity, fact, TRUE)

The same, with the source spilled into the next cell.

Paste thisExpect
=BAI_ENRICH(A2, "CEO", TRUE)The name, and beside it the site it came from.
=BAI_LIVE(question)

Answers a question that needs current information.

Paste thisExpect
=BAI_LIVE("current USD to PKR exchange rate")Today's rate, not a figure from training data.

The test that matters most

Put a company you know well in a cell and ask for something that has changed recently — a CEO, a funding round, a headcount. Then try a company that does not exist:

=BAI_ENRICH("Zzyzxqq Holdings Ltd", "CEO")

It should return NOT_FOUND. Most AI enrichment will invent a plausible name here, and an invented name is indistinguishable from a real one once it is sitting in your spreadsheet. That refusal is the feature.

Whole columns at once

Custom functions stop after 30 seconds, which is Google’s limit, not ours. For anything larger, use Bulk run in the sidebar.

  1. Select a column of cells — try A2:A4 from the sample data.
  2. Type what you want in plain language: find the CEO of each company. Press Continue.
  3. Check the sentence it shows you. It says what it is about to do before spending any credits.
  4. Press Run. Results are written back in one pass; you can close the browser.

Then hover a result cell. Every looked-up value carries a note with the sources behind it and the date it was checked. That is the part no other spreadsheet AI tool does.

The Ask panel

Select a range and ask a question about it — what is the pattern in these complaints? Tick Live to search the web instead of answering from training data. Insert into cell writes the answer back into your sheet.

What things cost

One row, any text function1 credit
The same on a better model2 or 4 credits
One looked-up fact25 credits
A repeated cellfree — served from cache

A row costs the same whether the cell holds ten characters or a thousand, so you can count the cost of a run before starting it. See pricing for what each plan includes.

When something goes wrong

#SIGN INOpen the sidebar and sign in. Formulas cannot do it themselves.
NOT_FOUNDWorking as intended — the search did not establish the answer, so nothing was invented.
#UPGRADE REQUIREDA looked-up fact on the free plan, or a quality tier your plan does not include.
#DAILY LIMIT REACHEDResets at 00:00 UTC.
#TOO MANY ROWSOver 20 cells in one formula. Use Bulk run.

Something not covered here? osamaaminemail@gmail.com