After configuring, installing, and
authenticating this add-on, you will be able to create
explorations via pivot table and work with
explorations.
Configuration
Cube for Sheets uses the SQL API internally. So, the SQL API has to be
enabled in the Cube deployment settings.
Installation
You have to install Cube for Sheets into your Google Workspace organization.
To do so, navigate to its page in the Google Workspace
Marketplace and click Install:
To verify that the add-on is successfully installed, go to any Google Sheets
document, open the Extensions menu, and check that there is the
Cube Cloud for Sheets menu item:
Authentication
You need to authenticate Cube for Sheets to retrieve data from Cube.
To do so, open the sidebar by going to the Extensions menu and choosing
Cube Cloud for Sheets → Show Sidebar. Then, click Log in to Cube.
A modal window with an authentication prompt will appear. Choose the deployments
that you want to work with in Google Sheets and click Authorize.
Once you see the Access Granted message, the window will close automatically.
Google Apps Script authenticates the add-on as whichever Google account you
signed in to first in the browser, not necessarily one with access to the
open spreadsheet. If they differ, the add-on can’t reach the spreadsheet and
the cursor status reads Cannot read your selection. Sign in to only one
Google account per browser profile (or use a private/incognito window) to
avoid this — or sign out of every Google account and sign back in with an
account that has access to the file first.
If you want to revoke the authentication, open the add-on menu and click
Sign out.
Create explorations via pivot table
To create an exploration, open the add-on and click Create exploration.
Then, select a Cube deployment from the drop-down. Finally,
you can start building a query by selecting a view and its members in the UI that
looks and feels like Playground.
Cube for Sheets works only with views, not cubes.
If the view defines default_ui_filters, those
filters are pre-populated as soon as you select the view — the same way they
are in workbooks. They are a starting point, not enforcement: you can change
their values, switch operators, or remove them.
Click on members to add them to Rows and Measures, or drag a member from
the list straight onto Rows, Columns, Measures, or Filters. You
can also drag members between zones to rearrange them, or click the funnel
buttons to add members to Filters. A member dropped onto Filters has no
value yet, so it appears greyed until you set one in the Filters pane.
Click on × to remove members from a query.
Use Order and Filters panes below to sort and filter the
data in the exploration.
Above the query editor, a cursor row (● Sheet1 · A1 next to + New)
shows the cell you last selected in the sheet. It can briefly lag your click;
press the target button in that row to re-read your selection. It only
refreshes the readout — it doesn’t move or write anything.
If you’d like to move the exploration to a new location, click on the desired
top-left cell and then confirm with the target button under
Result location. Unlike the cursor row’s button, this one moves the
exploration.
With every change to your query, Cube for Sheets will update the exploration on
the sheet after a slight delay. If you’d like to minimize it, consider
implementing pre-aggregations.
Writing a large result to the sheet can take a few seconds. When it does, a
progress bar appears above the run controls, tracking the write itself rather
than the query.
Measure position and order
By default, measures nest under each value of the dimension they’re paired
with — every measure for the first column value, then every measure for the
next. Open the Display tab to change Measure position to Before
columns to get the opposite layout: each measure spans every column value,
with all values of one measure together before moving to the next.
For example, with Forecast Sales Units and Forecast Net Sales on Measures
and a season dimension on Columns:
- After columns (default):
Q1: [Sales Units, Net Sales] | Q2: [Sales Units, Net Sales]
- Before columns:
Sales Units: [Q1, Q2] | Net Sales: [Q1, Q2]
The same choice applies when measures are placed on Rows instead (set
with Measures on, in the same tab) — there it’s labeled After rows /
Before rows.
To change the order measures appear in within their group, drag them within
the Measures pane on the Pivot tab. Position and order are saved with
the exploration and survive Refresh.
Column totals
The Column totals switch, below Measure position on the Display
tab, appends a bold Total row at the bottom of the written range, with one
value per measure column. It’s disabled, with a tooltip explaining why, until
the query has at least one measure.
Each total is computed by a separate query rather than summed from the cells
on the sheet, so it’s correct for non-additive measures — an average totals
to the average over the whole column, not an average of the visible rows,
and the same for a count-distinct. With a dimension pivoted onto columns,
each pivot column gets its own total the same way.
Calculations based on window functions, such as
running totals, are excluded — the same exclusion as Cube’s own row,
column, and pivot totals.
Totals are computed over the query’s full result, not just the rows visible
on the sheet, so a row-limited query still totals the whole result. Measure
filters are dropped from the totals query; dimension filters are kept. With
measures on Rows and no row dimension, no totals row is written, since
each “total” would just restate its own data row.
Column totals are saved with the exploration and survive Refresh; with
auto-run off, toggling the switch waits for Run like any other display
change.
When your exploration is ready, click Save to add it to your workspace. You
can then work with the exploration from the add-on.
To discard an unsaved exploration instead, choose Delete exploration from
the editor’s ⋮ menu.
Work with explorations
Opening the add-on shows the current spreadsheet’s home: every exploration
placed in this spreadsheet, grouped by sheet — a sheet isn’t limited to one
placement — with each placement’s range and how long ago it last refreshed.
A placement shows Out of date when its source exploration has been
edited since that copy was written to the sheet. Running an exploration
keeps its progress even if you close the pane before saving: it’s listed
under its sheet with a Not saved label; if it has no sheet or anchor
yet, it appears under a top-level Unsaved heading instead. Reopening it
resumes exactly where you left off. The pane can also hold more than one
exploration open at once, switchable from a picker at the top.
Click Browse all explorations to search by name across your whole
deployment, not just the current folder — results are grouped by type and
show each item’s folder location, and selecting one navigates you straight to
it.
An exploration can be placed more than once — on different sheets or at
different anchors in the same spreadsheet, and in more than one document at
once (a Google Sheets spreadsheet and an Excel workbook simultaneously).
Hovering a row in this list shows every placement it has in the current
document under Location / Locations. Click Refresh to update all
of that exploration’s placements in the current document at once; click its
title to open it and change the query, which applies to every placement.
Refresh all, at the top of the spreadsheet home, refreshes every
placement in the document as a tracked run: a footer at the bottom of the
pane tracks overall progress (N of M refreshed) with a Stop button,
while each row shows Queued, Refreshing…, or Not refreshed with a
reason if it failed. The run keeps going if you navigate away and back;
refreshes are written one sheet at a time, so a spreadsheet with many
sheets refreshes noticeably slower than a single placement.
If you’ve edited a placement’s cells by hand since it last refreshed, a
banner names the affected rows and warns that the next Refresh will
overwrite them — its Locate button jumps straight to them.
A placement survives renaming the sheet it’s on or the spreadsheet it’s in —
it’s tracked by the sheet’s and spreadsheet’s own stable ids, not by name. A
placement’s anchor is a fixed cell reference, though, so it does not
survive rows or columns inserted above it: the visible data shifts down with
the insert, but the stored anchor doesn’t move with it, so the next refresh
targets the wrong cell.
If an exploration has filters applied, an admin can turn on Show applied filters
in reports (Settings → Spreadsheet Add-ins) to make the filter state
visible on the sheet itself. When enabled, a summary of active filters is
added above the table, and filtered columns are marked “(filtered)” in
their header, both when the exploration is inserted and after Refresh.
Saved explorations also appear in the Cube workspace. See
Saving explorations for details.