Google Workspace CLI
by @robinsadeghpour
Interact with Google Workspace (Drive, Docs, Sheets) via the `gw` CLI. Use when an agent needs to browse, read, create, search, or manage files in Google Dri...
clawhub install gworkspace-cliπ About This Skill
name: gworkspace-cli description: > Interact with Google Workspace (Drive, Docs, Sheets) via the
gw CLI.
Use when an agent needs to browse, read, create, search, or manage files
in Google Drive, read or write Google Docs, or read/write Google Sheets β
all from the terminal. Works with both My Drive and Shared Drives.
required_binaries:
- gw
required_env:
- name: GOOGLE_CLIENT_ID
description: Google OAuth client ID (optional β embedded credentials used by default)
required: false
- name: GOOGLE_CLIENT_SECRET
description: Google OAuth client secret (optional β embedded credentials used by default)
required: false
- name: GW_CLIENT_ID
description: Alias for GOOGLE_CLIENT_ID
required: false
- name: GW_CLIENT_SECRET
description: Alias for GOOGLE_CLIENT_SECRET
required: false
config_paths:
- ~/.11x/gworkspace/token.json
- ~/.11x/gworkspace/config.json
install: npm i -g @11x.agency/gworkspace
source: https://github.com/robinfaraj/gworkspace-cli
gworkspace-cli
Manage Google Drive, Docs, and Sheets from the terminal with gw.
Do This First
gw is installed: npm i -g @11x.agency/gworkspacegw auth --status. If not authenticated, run gw auth.gw drive sharedAuthentication
gw auth # Opens browser for Google sign-in
gw auth --status # Check current auth (email, scopes, expiry)
gw logout # Remove stored credentials
Token stored at ~/.11x/gworkspace/token.json. OAuth credentials via env vars or .env file:
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRETGW_CLIENT_ID / GW_CLIENT_SECRET (aliases)Commands
Drive
# List files
gw drive ls # Root of My Drive
gw drive ls /Projects # By path
gw drive ls --folder # By folder ID
gw drive ls --type doc # Filter: doc, sheet, folder, all
gw drive ls --limit 50 # PaginationCreate folder
gw drive mkdir "Folder Name"
gw drive mkdir "Subfolder" --folder Search
gw drive search "quarterly report"
gw drive search "budget" --type sheetUpload
gw drive upload ./file.pdf
gw drive upload ./data.csv --folder --name "Q4 Data"List Shared Drives
gw drive shared
Shared Drives
Use the global --drive flag before any subcommand:
gw --drive drive ls
gw --drive drive ls /Projects
gw --drive drive mkdir "New Folder"
gw --drive drive search "report"
gw --drive drive upload ./file.pdf
To create docs/sheets in a Shared Drive, use --folder with a Shared Drive folder ID:
gw doc create "Title" --folder
gw sheet create "Title" --folder
Docs
gw doc read # Plain text output
gw doc read --markdown # Markdown output
gw doc create "Title" # Create empty doc, returns ID + URL
gw doc create "Title" --folder # Create in specific folder
gw doc append "text" # Append text to end of doc
gw doc append --file ./notes.txt # Append from file
Sheets
gw sheet read # Read entire first sheet (JSON rows)
gw sheet read "Sheet1!A1:C10" # Read specific range
gw sheet write "A1:B2" '[["Name","Score"],["Alice","95"]]'
gw sheet write "A1" --file ./data.csv
gw sheet append '[["Bob","88"]]'
gw sheet append --file ./more.csv
gw sheet create "Title" # Create spreadsheet
gw sheet create "Title" --folder
gw sheet list # List tabs/sheets
Output Modes
All commands support three output modes:
| Flag | Output | Use case |
|------------|----------------------------|--------------------|
| *(default)* | JSON | Piping, scripting |
| --pretty | Human-readable table | Terminal viewing |
| --quiet | IDs only, one per line | Chaining commands |
I/O Contract
URLs and IDs
All commands accept either format β paste a full Google URL or just the ID:
gw doc read https://docs.google.com/document/d/1abc.../edit
gw doc read 1abc...
Error Messages
| Condition | Message |
|------------------------|------------------------------------------------------------|
| No token | Error: Not authenticated. Run 'gw auth' to get started. |
| Token expired | Error: Session expired. Run 'gw auth' to re-authenticate. |
| File not found | Error: File not found. |
| Permission denied | Error: No access to this file. Make sure it's shared with your account. |
| Network error | Error: Could not reach Google APIs. Check your connection. |
Common Agent Workflows
Browse a Shared Drive and read a doc
gw drive shared --quiet # Get drive IDs
gw --drive drive ls --pretty # Browse root
gw --drive drive ls --folder # Drill into folder
gw doc read # Read the doc
Create a doc with content in a specific folder
gw drive mkdir "Project X" # Create folder, get ID
gw doc create "Requirements" --folder # Create doc, get ID
gw doc append "# Requirements\n\n..." # Write content
Export sheet data for processing
gw sheet read --quiet > data.tsv # Tab-separated to file
gw sheet read "Sheet1!A1:D100" | jq '.' # JSON for processing
Upload and organize files
gw drive mkdir "Reports" --folder
gw drive upload ./q4-report.pdf --folder --name "Q4 Report 2026"