Generate Bingo Cards in Sheets
Formula
The API generates cards in various sizes (3x3 to 10x10) with optional free spaces and traditional BINGO letter headers for 5x5 cards.
=VERVE("bingocardgenerator")=VERVE.CALL("bingocardgenerator")Inputs
Required inputs are positional, in the order below. Everything else is passed as a "name", value pair after them — the same shape as SUMIFS.
| Input | Type | Where it goes | Description |
|---|---|---|---|
size | integer | "size", value | Card size (3x3 to 10x10) (e.g. 5) |
freeSpace | boolean | "freeSpace", value | Include free space in center (e.g. true) |
imagePremium | boolean | "image", value | Set to true to generate a downloadable bingo card image (e.g. true) |
Passing an option
=VERVE("bingocardgenerator", "size", "5")What lands in your sheet
With no "field" pair the formula spills the whole response as two columns — field name on the left, value on the right — starting at the cell you typed in. Make sure the cells below and to the right are empty.
Pulling one value
Add a "field" pair to get a single cell back instead of a table. The field name is the dot-path from the table below.
=VERVE("bingocardgenerator", "field", "card.0.0")=VERVE.CALL("bingocardgenerator", "field", "card.0.0")Available fields
#PREMIUM(field) rather than a value, so a locked field never looks like a real answer.| Use as "field" | Type | Example cell value | Description |
|---|---|---|---|
card | array[5] | list of rows | 2D array of bingo card numbers and FREE space |
card.0.0 | number | 14 | |
card.0.1 | number | 19 | |
card.0.2 | number | 42 | |
card.0.3 | number | 47 | |
card.0.4 | number | 71 | |
htmlPremium | string | <html><head><title>Bingo Card</title><style>body {font-family: Arial, sans-serif; padding: 20px;}table {border-collapse: collapse; margin: 0 auto;}td {text-align: center; width: 60px; height: 60px; border: 2px solid #000; font-size: 20px; font-weight: bold;}th {text-align: center; width: 60px; height: 40px; border: 2px solid #000; font-size: 24px; font-weight: bold; background-color: #4CAF50; color: white;}.free-space {background-color: #FFD700; font-size: 14px;}</style></head><body><table><tr><th>B</th><th>I</th><th>N</th><th>G</th><th>O</th></tr><tr><td class=''>14</td><td class=''>19</td><td class=''>42</td><td class=''>47</td><td class=''>71</td></tr><tr><td class=''>4</td><td class=''>17</td><td class=''>36</td><td class=''>50</td><td class=''>69</td></tr><tr><td class=''>11</td><td class=''>18</td><td class='free-space'>FREE</td><td class=''>53</td><td class=''>73</td></tr><tr><td class=''>15</td><td class=''>23</td><td class=''>41</td><td class=''>52</td><td class=''>68</td></tr><tr><td class=''>8</td><td class=''>27</td><td class=''>43</td><td class=''>58</td><td class=''>75</td></tr></table></body></html> | Rendered HTML table of bingo card for display |
size | number | 5 | Dimensions of the bingo card grid |
freeSpace | boolean | true | Whether center free space was included |
totalCells | number | 25 | Total number of cells in the card |
winningPatterns | array | ["horizontal","vertical","diagonal"] | Possible winning patterns for bingo game |
image | object | {…} | |
image.imageNamePremium | string | 8dcb6cee-a419-4501-a13c-ff6eafd393b7_bingo.png | Unique filename of generated bingo card image |
image.format | string | .png | File format extension of image file |
image.downloadURLPremium | string | https://storage.googleapis.com/apiverve/APIData/bingocardgenerator/8dcb6cee-a419-4501-a13c-ff6eafd393b7_bingo.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010022&Signature=ErKaS3I1DaHCBxYRxnjx5QLHm0S3zfpJIWzz7BosGyhDwYSejCHlfcSI%2BKOHJzxEiUdSWFFt947%2BLzHGpVZrLYPxGGvgCVPOKZ4H9vfgyJPP%2BF9LICc9kLG6%2FwevlPsAHHHLjoLS%2F7OVByiwzTWguRzcbyYT44XpbbU0IsOA40S7Utqt%2BjAC5%2FSfhW4z%2FdJE2yXsSNqr3acEJB70cVde3qkP80Iv6H7%2FZB08EDjbakauJmjASJ86H%2BWM2b9BPo250bBzLtGPxW8KZUVgy79SDxJu8VVnzAhiWzcmih9UrBUvejuxkbPIAx6ohwHepmh414G0wvAcxtHRaXx4O5cr7g%3D%3D | Signed URL to download generated bingo card image |
image.expiresPremium | number | 1766010022446 | Unix timestamp when image download URL expires |
When a cell doesn't fill
A failed lookup returns readable text starting with #ERR rather than a spreadsheet error, because Excel cannot show a custom message on a real error — you would get a bare #VALUE! with no reason. The trade-off is that IFERROR() won't catch it; test with LEFT(cell, 4) = "#ERR" instead.
| Cell reads | What happened |
|---|---|
#ERR Not connected | No API key saved. Open the side panel and connect your account. |
#ERR Replace <name> with a cell or value | The preview formula was copied as-is. Swap the placeholder for a cell reference. |
#ERR No "x" in bingocardgenerator | An option name that this source doesn't take. The message lists the ones it does. |
#ERR No data point "…" | The "field" path isn't in the response. Check the dot-path against the table above. |
#PREMIUM(field) | The field exists but your plan doesn't include it. |
#ERR Out of credits | The month's credits are spent. Usage resets on your billing date. |
Before the formula works
The add-in reads the API key you saved once in the side panel — the key never goes in the formula, so a shared sheet doesn't leak it and a collaborator without access simply sees the last calculated values.
- Install the add-in for Google Sheets or Excel.
- Open the side panel and sign in, or paste a key from your dashboard.
- Type the formula above into any cell.
Other ways to use Generate Bingo Cards in Sheets
Set up Generate Bingo Cards in Sheets on VerveSheets, or reach the same source a different way. Your VerveSheets account and credits work on all of them — one key, one balance.
Frequently asked questions
Does Generate Bingo Cards in Sheets work in both Google Sheets and Excel?
Yes — the same source, the same arguments. Sheets calls it =VERVE("bingocardgenerator", …) and Excel calls it =VERVE.CALL("bingocardgenerator", …); that function name is the only difference.
Do the cells recalculate on their own?
They recalculate when the sheet does — on edit, on open, or on a manual recalc. Each recalculation is a fresh call and spends credits, so for a large static column it's worth copying the results and pasting them as values.
How many credits does a filled column cost?
1 credit per row looked up, whether you drag the formula or pass a range. The range form is one HTTP call instead of many, but the credit count is the same.
Can I share the sheet without sharing my key?
Yes. The key is stored against your account, not in the file. Collaborators see the values already in the cells; formulas only recalculate for someone who has connected their own account.
Why is a cell showing #ERR instead of an error?
So you can read the reason. Excel can't display a custom message on a real spreadsheet error, so the add-in returns the explanation as text on both platforms instead.