Skill to manage and update google sheet
Read, write, append, and manage Google Sheets via the Google Sheets API (Node.js SDK). Use when you need to interact with spreadsheets — reading data, writing/updating cells, appending rows, clearing ranges, formatting cells, managing sheets. Requires a Google Cloud service account with Sheets API enabled.
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 1 · 2.6k · 6 current installs · 7 all-time installs
MIT-0
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
Name, description, SKILL.md, package.json and scripts/sheets.js consistently implement Google Sheets operations via the official googleapis Node.js client. The operations (read/write/format/manage) align with the stated purpose. Minor incoherence: the registry metadata lists no required environment variables or primary credential, while the skill clearly needs a Google service-account JSON key.
Instruction Scope
Runtime instructions in SKILL.md are explicit and scoped to Sheets usage: obtain a service account JSON key, share sheets with the service account email, run npm install and run node scripts/sheets.js <command>. The instructions and the script only reference credential files and paths (cwd and ~/.config/google-sheets) and do not attempt to read unrelated system files or call unexpected endpoints.
Install Mechanism
No remote download/install spec in registry (instruction-only). The repo includes package.json/package-lock.json and instructs to run npm install to fetch googleapis from the public npm registry — a standard, expected dependency for this functionality. No arbitrary URL downloads or archive extraction were found.
Credentials
The skill legitimately requires a Google service account key (private JSON) and checks multiple env var/file locations (GOOGLE_SERVICE_ACCOUNT_KEY, GOOGLE_SHEETS_KEY_FILE, ./service-account.json, ./credentials.json, ~/.config/google-sheets/credentials.json). However, the registry metadata does not declare any required env vars or a primary credential. That mismatch reduces transparency: installing the skill will require you to supply a sensitive JSON key even though the registry listing doesn't advertise it.
Persistence & Privilege
The skill does not request always: true, does not modify other skills or global agent settings, and does not persist credentials beyond normal usage (it reads a key file / env var at runtime). The default autonomous invocation setting is present but not combined with other red flags.
What to consider before installing
This skill appears to do what it says: it uses the official googleapis client to manage Google Sheets. However, the registry listing omitted the fact that the skill needs a Google service-account JSON key (private credentials) and did not name a primary environment variable — the SKILL.md and scripts do require that key. Before installing: 1) Confirm you trust the skill source (homepage is missing and owner ID is unknown). 2) Only provide a dedicated service-account key with the minimal Sheets scope (https://www.googleapis.com/auth/spreadsheets), not broad project permissions. 3) Prefer creating a short-lived or narrowly-scoped service account and rotate/revoke the key after use. 4) Run the skill in an isolated environment (container/VM) if possible. 5) Review scripts/sheets.js yourself (it was included and appears to only call Google APIs) and search for any network calls to non-Google endpoints (none found). If the registry metadata is updated to explicitly declare the required env var(s) and the skill author/publisher can be verified, this assessment would likely change to benign.Like a lobster shell, security has layers — review code before you run it.
Current versionv1.0.0
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
Google Sheets Skill
Interact with Google Sheets using a service account.
Setup (One-time)
-
Google Cloud Console:
- Create/select a project
- Enable "Google Sheets API"
- Create a Service Account (IAM → Service Accounts → Create)
- Download JSON key
-
Configure credentials (one of these):
- Set env:
GOOGLE_SERVICE_ACCOUNT_KEY=/path/to/key.json - Place
service-account.jsonorcredentials.jsonin the skill directory - Place in
~/.config/google-sheets/credentials.json
- Set env:
-
Share sheets with the service account email (found in JSON key as
client_email) -
Install dependencies:
cd skills/google-sheets && npm install
Usage
node scripts/sheets.js <command> [args]
Commands
Data Operations
| Command | Args | Description |
|---|---|---|
read | <id> <range> | Read cells |
write | <id> <range> <json> | Write data |
append | <id> <range> <json> | Append rows |
clear | <id> <range> | Clear range |
Formatting
| Command | Args | Description |
|---|---|---|
format | <id> <range> <formatJson> | Format cells |
getFormat | <id> <range> | Get cell formats |
borders | <id> <range> [styleJson] | Add borders |
copyFormat | <id> <source> <dest> | Copy format between ranges |
merge | <id> <range> | Merge cells |
unmerge | <id> <range> | Unmerge cells |
Layout
| Command | Args | Description |
|---|---|---|
resize | <id> <sheet> <cols|rows> <start> <end> <px> | Resize columns/rows |
autoResize | <id> <sheet> <startCol> <endCol> | Auto-fit columns |
freeze | <id> <sheet> [rows] [cols] | Freeze rows/columns |
Sheet Management
| Command | Args | Description |
|---|---|---|
create | <title> | Create spreadsheet |
info | <id> | Get metadata |
addSheet | <id> <title> | Add sheet tab |
deleteSheet | <id> <sheetName> | Delete sheet tab |
renameSheet | <id> <oldName> <newName> | Rename sheet tab |
Examples
# Read data
node scripts/sheets.js read "SPREADSHEET_ID" "Sheet1!A1:C10"
# Write data
node scripts/sheets.js write "SPREADSHEET_ID" "Sheet1!A1:B2" '[["Name","Score"],["Alice",95]]'
# Format cells (yellow bg, bold)
node scripts/sheets.js format "SPREADSHEET_ID" "Sheet1!A1:B2" '{"backgroundColor":{"red":255,"green":255,"blue":0},"textFormat":{"bold":true}}'
# Copy format from one range to another
node scripts/sheets.js copyFormat "SPREADSHEET_ID" "Sheet1!A1:C3" "Sheet1!D1:F3"
# Add borders
node scripts/sheets.js borders "SPREADSHEET_ID" "Sheet1!A1:C3"
# Resize columns to 150px
node scripts/sheets.js resize "SPREADSHEET_ID" "Sheet1" cols A C 150
# Auto-fit column widths
node scripts/sheets.js autoResize "SPREADSHEET_ID" "Sheet1" A Z
# Freeze first row and column
node scripts/sheets.js freeze "SPREADSHEET_ID" "Sheet1" 1 1
# Add new sheet tab
node scripts/sheets.js addSheet "SPREADSHEET_ID" "NewSheet"
Format Options
{
"backgroundColor": {"red": 255, "green": 255, "blue": 0},
"textFormat": {
"bold": true,
"italic": false,
"fontSize": 12,
"foregroundColor": {"red": 0, "green": 0, "blue": 0}
},
"horizontalAlignment": "CENTER",
"verticalAlignment": "MIDDLE",
"wrapStrategy": "WRAP"
}
Border Style
{
"style": "SOLID",
"color": {"red": 0, "green": 0, "blue": 0}
}
Border styles: DOTTED, DASHED, SOLID, SOLID_MEDIUM, SOLID_THICK, DOUBLE
Finding Spreadsheet ID
From URL: https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit
Troubleshooting
- 403 Forbidden: Sheet not shared with service account email
- 404 Not Found: Wrong spreadsheet ID or sheet name
Files
5 totalSelect a file
Select a file to preview.
Comments
Loading comments…
