Fast Google Sheets operations via FGP daemon - 35-70x faster than MCP. Use when user needs to read spreadsheets, write data, create sheets, manage formulas, or export data. Triggers on "read spreadsheet", "write cells", "sheets data", "google sheets", "update spreadsheet", "append rows", "sheets formula".
Resources
1Install
npx skillscat add fast-gateway-protocol/fgp-skills/google-sheets-daemon Install via the SkillsCat registry.
SKILL.md
FGP Google Sheets Daemon
Ultra-fast Google Sheets operations using direct API access. 35-70x faster than browser automation.
Why FGP?
| Operation | FGP Daemon | Browser/MCP | Speedup |
|---|---|---|---|
| Read range | 10-20ms | ~700ms | 35-70x |
| Write cells | 15-30ms | ~800ms | 25-55x |
| Append rows | 12-25ms | ~750ms | 30-60x |
| Create sheet | 20-40ms | ~900ms | 22-45x |
Direct Google Sheets API via persistent daemon.
Installation
brew install fast-gateway-protocol/tap/fgp-google-sheets
# Or
bash ~/.claude/skills/fgp-google-sheets/scripts/install.shSetup
# Authenticate
fgp sheets auth
# Browser opens for OAuth consentUsage
Reading Data
# Read entire sheet
fgp sheets read <spreadsheet-id>
# Read specific range
fgp sheets read <spreadsheet-id> --range "A1:D100"
# Read named range
fgp sheets read <spreadsheet-id> --range "SalesData"
# Read specific sheet tab
fgp sheets read <spreadsheet-id> --sheet "Sheet2" --range "A:C"
# Output formats
fgp sheets read <id> --format json # Default
fgp sheets read <id> --format csv
fgp sheets read <id> --format tableWriting Data
# Write to range
fgp sheets write <spreadsheet-id> --range "A1" --data '[["Name", "Value"], ["Test", 123]]'
# Write from JSON file
fgp sheets write <spreadsheet-id> --range "A1" --file data.json
# Append rows
fgp sheets append <spreadsheet-id> --data '[["New", "Row"]]'
# Append to specific sheet
fgp sheets append <spreadsheet-id> --sheet "Log" --data '[["2024-01-15", "Event"]]'
# Update specific cells
fgp sheets update <spreadsheet-id> --range "B2" --value "Updated"Sheet Management
# List all sheets (tabs) in spreadsheet
fgp sheets list <spreadsheet-id>
# Create new spreadsheet
fgp sheets create "My Spreadsheet"
# Add new sheet tab
fgp sheets add-sheet <spreadsheet-id> "New Tab"
# Delete sheet tab
fgp sheets delete-sheet <spreadsheet-id> --sheet "Old Tab"
# Rename sheet
fgp sheets rename-sheet <spreadsheet-id> --from "Sheet1" --to "Data"
# Duplicate sheet
fgp sheets duplicate-sheet <spreadsheet-id> --sheet "Template"Formatting
# Bold header row
fgp sheets format <spreadsheet-id> --range "1:1" --bold
# Set background color
fgp sheets format <spreadsheet-id> --range "A1:D1" --background "#4285f4"
# Freeze rows/columns
fgp sheets freeze <spreadsheet-id> --rows 1 --cols 1
# Auto-resize columns
fgp sheets resize <spreadsheet-id> --columns "A:D" --auto
# Add borders
fgp sheets format <spreadsheet-id> --range "A1:D10" --border solidFormulas
# Set formula
fgp sheets formula <spreadsheet-id> --cell "E1" --formula "=SUM(A1:D1)"
# Batch formulas
fgp sheets formula <spreadsheet-id> --range "E1:E100" --formula "=SUM(A:D)"
# Get formulas (not values)
fgp sheets read <spreadsheet-id> --range "E:E" --formulasFind & Replace
# Find in spreadsheet
fgp sheets find <spreadsheet-id> "search term"
# Find and replace
fgp sheets replace <spreadsheet-id> --find "old" --replace "new"
# Replace in specific range
fgp sheets replace <spreadsheet-id> --find "old" --replace "new" --range "A:A"Charts
# Create chart
fgp sheets chart <spreadsheet-id> --type bar --range "A1:B10" --title "Sales"
# Chart types: bar, line, pie, area, scatter, column
# List charts
fgp sheets charts <spreadsheet-id>
# Delete chart
fgp sheets delete-chart <spreadsheet-id> --chart-id <id>Filters & Sorting
# Sort by column
fgp sheets sort <spreadsheet-id> --range "A1:D100" --by "B" --order desc
# Create filter
fgp sheets filter <spreadsheet-id> --range "A1:D100"
# Clear filter
fgp sheets clear-filter <spreadsheet-id>Available Commands
| Command | Description | Example |
|---|---|---|
read |
Read cell range | fgp sheets read <id> --range "A1:B10" |
write |
Write data to range | fgp sheets write <id> --range "A1" --data '[[...]]' |
append |
Append rows | fgp sheets append <id> --data '[[...]]' |
create |
Create spreadsheet | fgp sheets create "Name" |
list |
List sheet tabs | fgp sheets list <id> |
format |
Format cells | fgp sheets format <id> --range "A1" --bold |
formula |
Set formula | fgp sheets formula <id> --cell "A1" --formula "=SUM()" |
sort |
Sort range | fgp sheets sort <id> --by "A" |
chart |
Create chart | fgp sheets chart <id> --type bar |
Example Workflows
Daily data append
# Append today's metrics
fgp sheets append $SHEET_ID --data "[[\"$(date +%Y-%m-%d)\", $REVENUE, $USERS]]"Export to CSV
# Read and save as CSV
fgp sheets read $SHEET_ID --format csv > data.csvSync from JSON
# Clear and write fresh data
fgp sheets write $SHEET_ID --range "A2:Z" --clear
fgp sheets write $SHEET_ID --range "A2" --file data.jsonCreate report template
# Create new spreadsheet with headers
SHEET=$(fgp sheets create "Monthly Report" --json | jq -r '.id')
fgp sheets write $SHEET --range "A1" --data '[["Date", "Revenue", "Users", "Churn"]]'
fgp sheets format $SHEET --range "1:1" --bold --background "#4285f4" --color white
fgp sheets freeze $SHEET --rows 1Troubleshooting
Not authenticated
Error: No credentials foundRun: fgp sheets auth
Spreadsheet not found
Error: Spreadsheet not foundCheck spreadsheet ID is correct and you have access.
Rate limit exceeded
Error: Rate Limit ExceededGoogle Sheets API has quotas. Wait and retry, or use batch operations.
Permission denied
Error: The caller does not have permissionCheck you have edit access to the spreadsheet.
Architecture
- Google Sheets API v4
- OAuth 2.0 with offline refresh
- UNIX socket at
~/.fgp/services/google-sheets/daemon.sock - Batch operations for efficiency
- Value render options (formatted, unformatted, formula)