A Chrome Extension that lets you control Google Sheets using natural language, powered by Claude (Anthropic).
- Natural language commands — "Create a 4×3 table with name, email, number, gender"
- Charts & graphs — "Plot monthly signups by channel as a line chart"
- Formatting — "Make the header row bold with a blue background and white text"
- Formulas — "Add a SUM formula in the last row for all numeric columns"
- Preview before apply — See exactly what Claude plans to do before it touches your sheet
- CSV, TSV, TXT & PDF ingestion — Attach a file and generate charts directly from file data
- Large CSV import mode — For bigger CSVs, data is written first and then visualization ops are generated
- Multi-series charts — Chart operations can map one domain column to multiple series columns
- Two UIs — Injected sidebar inside Sheets, or Chrome's native Side Panel
The extension no longer stores an Anthropic API key in extension code. It calls your backend proxy endpoint.
In the Side Panel:
- Click Proxy in the file bar
- Enter your proxy URL (example:
https://your-api.example.com/sheetmind/claude) - Optionally enter a bearer token used by your backend
Expected proxy response JSON:
{ "text": "{\"summary\":\"...\",\"preview\":\"...\",\"operations\":[...] }" }The text field must be a string containing the JSON operation plan.
This extension uses chrome.identity to get a Google OAuth token so it can call the Sheets API on your behalf.
- Go to https://console.cloud.google.com
- Create a new project (or use an existing one)
- Enable the Google Sheets API
- Go to APIs & Services → Credentials
- Create an OAuth 2.0 Client ID → choose Chrome Extension
- Enter your extension ID (see Step 3 for how to get this)
- Copy the Client ID and add it to
manifest.json:
"oauth2": {
"client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
"scopes": [
"https://www.googleapis.com/auth/spreadsheets"
]
}- Open Chrome and go to
chrome://extensions - Enable Developer Mode (top-right toggle)
- Click Load unpacked
- Select the
sheets-llm-extensionfolder - Note the Extension ID shown — use this when setting up your OAuth Client ID in Step 2
- Open any Google Sheet at
https://docs.google.com/spreadsheets/ - Click the SheetMind icon in your Chrome toolbar
- Click Open Sidebar (injected into the page) or Open Side Panel (Chrome native panel)
- (Optional) Attach a CSV, TSV, TXT, or PDF from the file bar
- Type a command and hit Send
- Review the Preview of changes
- Click ✓ Apply Changes to execute
For large CSV files, SheetMind imports rows in chunks first and then asks the model for visualization-only steps.
| Prompt | What it does |
|---|---|
Create a 4×3 table with name, email, number, gender |
Writes headers + sample data, formats header row |
Create a pivot table summarizing signups by channel and month |
Builds a pivot table from your existing data |
Use the attached CSV to build a monthly trend dashboard |
Imports CSV data and creates trend/category charts |
Read the attached PDF table and plot revenue by region |
Extracts table data from PDF and creates chart ops |
Format the header row — bold, blue background, white text |
Applies formatting to row 1 |
Add SUM formulas in the last row for all numeric columns |
Writes =SUM() formulas |
Freeze the first row |
Freezes row 1 as header |
Auto-resize all columns |
Makes columns fit their content |
Clear everything from A1 to Z100 |
Clears that range |
sheets-llm-extension/
├── manifest.json # Extension manifest (MV3)
├── background.js # Service worker — proxy LLM calls & token handling
├── content.js # Injected sidebar UI & Sheets API execution
├── sidebar.css # Sidebar styles
├── popup.html # Extension icon popup
├── popup.js # Popup logic
├── sidepanel.html # Chrome native side panel UI
├── sidepanel.js # Side panel logic & Sheets API execution
└── icons/
├── icon16.png
├── icon48.png
└── icon128.png
- Changes are applied via the Google Sheets API — the tab will reload after applying to show updates.
- The extension only activates on
docs.google.com/spreadsheetsURLs. - Claude generates a preview of every planned operation before anything is written — you always confirm first.
- Charts are placed to the right of your data by default (column F, row 2 anchor).
- If a file is attached, file data is prioritized over synthetic sample data.