From google-sheets
Read, write, and manage Google Sheets via the Google Workspace CLI (gws). Use when users ask to read spreadsheet data, append rows, create new sheets, or automate data pipelines with Google Sheets as source/destination.
npx claudepluginhub leolionart/claude-skills --plugin google-sheetsThis skill uses the workspace's default tool permissions.
- Đọc dữ liệu từ Google Sheets (specific range hoặc toàn sheet)
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
gws CLI đã cài và đã xác thựchttps://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/spreadsheets.readonlyscripts/sheets_helper.py# Đọc range cụ thể
gws sheets spreadsheets values get \
--params '{"spreadsheetId": "SHEET_ID", "range": "Sheet1!A1:D10"}'
# Dùng helper command (đơn giản hơn)
gws sheets +read \
--spreadsheet-id SHEET_ID \
--range "Sheet1!A1:D10"
# Đọc toàn bộ sheet
gws sheets +read \
--spreadsheet-id SHEET_ID \
--range "Sheet1"
# Parse kết quả với jq
gws sheets +read \
--spreadsheet-id SHEET_ID \
--range "Sheet1!A:C" | jq '.values[]'
# Append 1 hàng
gws sheets +append \
--spreadsheet-id SHEET_ID \
--range "Sheet1!A:A" \
--values '[["2024-01-15", "Alice", "Completed", 150]]'
# Append nhiều hàng
gws sheets spreadsheets values append \
--params '{"spreadsheetId": "SHEET_ID", "range": "Sheet1!A:A", "valueInputOption": "USER_ENTERED"}' \
--json '{
"values": [
["2024-01-15", "Alice", "Task A", "Done"],
["2024-01-15", "Bob", "Task B", "In Progress"]
]
}'
# Update range cụ thể
gws sheets spreadsheets values update \
--params '{"spreadsheetId": "SHEET_ID", "range": "Sheet1!B2", "valueInputOption": "USER_ENTERED"}' \
--json '{"values": [["New Value"]]}'
# Update nhiều cells
gws sheets spreadsheets values batchUpdate \
--params '{"spreadsheetId": "SHEET_ID"}' \
--json '{
"valueInputOption": "USER_ENTERED",
"data": [
{"range": "Sheet1!A1", "values": [["Header 1"]]},
{"range": "Sheet1!B1", "values": [["Header 2"]]}
]
}'
# Tạo spreadsheet trống
gws sheets spreadsheets create \
--json '{"properties": {"title": "Tên Spreadsheet"}}'
# Tạo với multiple sheets
gws sheets spreadsheets create \
--json '{
"properties": {"title": "Project Tracker"},
"sheets": [
{"properties": {"title": "Tasks"}},
{"properties": {"title": "Summary"}},
{"properties": {"title": "Archive"}}
]
}'
# Xem thông tin spreadsheet (title, sheets list, permissions)
gws sheets spreadsheets get \
--params '{"spreadsheetId": "SHEET_ID"}'
# Chỉ xem danh sách sheet tabs
gws sheets spreadsheets get \
--params '{"spreadsheetId": "SHEET_ID"}' | jq '.sheets[].properties | {title, sheetId}'
gws schema sheets.spreadsheets.values.get
gws schema sheets.spreadsheets.values.append
gws schema sheets.spreadsheets.values.update
gws schema sheets.spreadsheets.create
User muốn đọc dữ liệu?
→ Hỏi: spreadsheet_id (từ URL), range (vd: "Sheet1!A1:D10")
→ Dùng: gws sheets +read
→ Nếu không biết range: lấy metadata trước để xem sheet names
User muốn thêm dữ liệu?
→ Hỏi: spreadsheet_id, range (sheet tab + cột bắt đầu), data
→ Dùng: gws sheets +append
→ valueInputOption: USER_ENTERED (tự convert types) hoặc RAW (giữ nguyên string)
User muốn tạo sheet mới?
→ Hỏi: tên spreadsheet, danh sách sheet tabs (nếu có)
→ Dùng: gws sheets spreadsheets create
→ Sau đó lưu spreadsheet_id từ response để user biết
User muốn import từ CSV?
→ Dùng scripts/sheets_helper.py --import-csv
Dùng scripts/sheets_helper.py cho các tác vụ phức tạp:
# Đọc và hiển thị dạng table đẹp
python3 skills/google-sheets/scripts/sheets_helper.py read \
--sheet-id SHEET_ID \
--range "Sheet1!A1:E20"
# Import CSV vào Sheets
python3 skills/google-sheets/scripts/sheets_helper.py import-csv \
--sheet-id SHEET_ID \
--range "Sheet1!A1" \
--file data.csv
# Export Sheets ra CSV
python3 skills/google-sheets/scripts/sheets_helper.py export-csv \
--sheet-id SHEET_ID \
--range "Sheet1" \
--output output.csv
Spreadsheet ID nằm trong URL:
https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit
Ví dụ URL:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/edit
→ SHEET_ID = 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms
| Lỗi | Nguyên nhân | Cách xử lý |
|---|---|---|
| "Spreadsheet not found" | ID sai hoặc không có quyền | Kiểm tra ID từ URL, share với service account |
| "Range not found" | Sheet tab name sai | Dùng spreadsheets get để xem danh sách sheets |
| "Unable to parse range" | Format range sai | Format chuẩn: SheetName!A1:D10 |
| Exit 2 | Auth lỗi | Kiểm tra scope spreadsheets trong OAuth |