Install
openclaw skills install google-sheets-skillGoogle Sheets Secure Management. Use when the user wants to create, read, write, or append spreadsheet data; manage tabs (read/add/delete); copy spreadsheets; or manage sharing, permissions, renames, and deletes.
openclaw skills install google-sheets-skillUse porteden sheets for Google Sheets data operations and file management. Use -jc flags for AI-optimized output.
If porteden is not installed: brew install porteden/tap/porteden (or go install github.com/porteden/cli/cmd/porteden@latest).
porteden auth login — opens browser, credentials stored in system keyringporteden auth login --token <key> — stored in system keyringporteden auth statusPE_API_KEY is set in the environment, the CLI uses it automatically (no login needed).driveAccessEnabled: true and a connected Google account with Drive scopes.porteden sheets)porteden sheets create --name "Q1 Budget"porteden sheets create --name "Data" --folder google:0B7_FOLDERporteden sheets create --name "Sales 2026" --csv-file ./sales.csvporteden sheets create --name "Data" --csv "Name,Score\nAlice,95"porteden sheets info google:SHEETID -jcporteden sheets content google:SHEETID -jcporteden sheets content google:SHEETID --max-rows 500 -jcporteden sheets content google:SHEETID --ranges "Summary!A1:C100,Raw Data!A:Z" -jcporteden sheets read google:SHEETID --range "Sheet1!A1:C10" -jcporteden sheets read google:SHEETID --range "Sheet1" -jcporteden sheets write google:SHEETID --range "Sheet1!A1:B2" --values '[["Name","Score"],["Alice",95]]'porteden sheets write google:SHEETID --range "Sheet1!A1:B2" --csv "Name,Score\nAlice,95"porteden sheets write google:SHEETID --range "Sheet1!A1" --csv-file ./data.csvporteden sheets write google:SHEETID --updates '[{"range":"Summary!A1:B1","values":[["Metric","Value"]]},{"range":"Detail!A1","values":[["x"]]}]'porteden sheets append google:SHEETID --range "Sheet1!A:B" --values '[["Bob",87]]'porteden sheets append google:SHEETID --range "Sheet1!A:B" --csv "Bob,87"porteden sheets read-tab google:SHEETID --title "Q2 Forecast" -jcporteden sheets read-tab google:SHEETID --sheet-id 0 -jcporteden sheets add-tab google:SHEETID --title "Q2 Forecast"porteden sheets add-tab google:SHEETID --title "Q2 Forecast" --rows 200 --cols 12 --index 2porteden sheets delete-tab google:SHEETID --title "Q2 Forecast" -yporteden sheets delete-tab google:SHEETID --sheet-id 1843502915 -yCopy (duplicate) the spreadsheet: porteden sheets copy google:SHEETID --name "Q2 Forecast (copy)"
Copy into a folder: porteden sheets copy google:SHEETID --folder google:0B7_FOLDER
Get export links (xlsx, pdf, csv): porteden sheets download google:SHEETID -jc
Share: porteden sheets share google:SHEETID --type user --role writer --email user@example.com
Share publicly: porteden sheets share google:SHEETID --type anyone --role reader
List permissions: porteden sheets permissions google:SHEETID -jc
Rename: porteden sheets rename google:SHEETID --name "Q2 Budget"
Delete (trash): porteden sheets delete google:SHEETID -y
Sheet1!A1:C10Sheet1Sheet1!A:BPE_PROFILE=work to avoid repeating --profile.-jc is shorthand for --json --compact: strips noise, limits fields, reduces tokens for AI agents.google:1BxiMVs0XRA5...). Pass them as-is.porteden sheets content over multiple porteden sheets read calls when you need more than one tab — it returns every tab in a single upstream call.porteden sheets content is capped at 200 rows × 26 columns per tab by default. Tabs with more data come back marked clipped: true with a fullRange string you can feed straight into porteden sheets read --range <fullRange> to drill in. Use --max-rows 5000 to raise the cap, or --ranges to pass explicit A1 ranges with no cap.porteden sheets create accepts optional --csv/--csv-file to seed the first tab. Without them a blank spreadsheet is created. Both flags are mutually exclusive.Sheet1. When Drive imports CSV the resulting tab takes the file's name (e.g., --name "Q1 Numbers" → tab title Q1 Numbers). Range examples below default to Sheet1!... which only works on truly blank spreadsheets created via the Google Sheets UI. For CSV-seeded sheets, first call porteden sheets info <id> -jc to discover the actual tab names, then quote them in your range: 'Q1 Numbers'!A1:C10.sheets write / sheets append: --values, --csv, and --csv-file are mutually exclusive — provide exactly one.sheets write --updates): a JSON array of {"range","values"} objects, written in one atomic call (a bad range fails the whole batch — no partial writes). Up to 50 ranges / 50,000 cells. --updates is mutually exclusive with --range/--values/--csv/--csv-file; --raw still applies request-wide. Prefer it over multiple sheets write calls when populating several tabs/ranges at once.sheets read-tab and sheets delete-tab take exactly one of --title or --sheet-id. --sheet-id 0 is valid (the first tab is often sheetId 0). read-tab returns the tab's entire used range — no A1 range needed. add-tab returns the new tab's sheetId; titles must be unique within the spreadsheet.sheets copy duplicates the whole spreadsheet (not idempotent — calling twice makes two copies) and returns the new file's id. It's a wrapper over drive copy.--csv inline: use \n as row separator (e.g., "Name,Score\nAlice,95\nBob,87").--raw flag disables formula evaluation (values written literally, not parsed as formulas).porteden sheets download returns URLs only — no binary content is streamed.accessInfo in responses describes active token restrictions.delete moves to trash (reversible). Files can be restored from Google Drive trash.PE_API_KEY, PE_PROFILE, PE_FORMAT, PE_COLOR, PE_VERBOSE.