Install
openclaw skills install panthrocorp-google-workspaceGmail, Contacts, Calendar, Drive (with comments), Docs, and Sheets for OpenClaw agents
openclaw skills install panthrocorp-google-workspaceAccess Gmail (read-only), Google Calendar (configurable), Google Contacts (read-only), Google Drive (configurable, with comments), Google Docs (configurable), and Google Sheets (configurable).
Download the latest release binary for linux/arm64 and install to ~/.openclaw/bin/:
TAG=$(curl -fsSL "https://api.github.com/repos/PanthroCorp-Limited/openclaw-skills/releases" \
| grep -o '"tag_name":"google-workspace/v[^"]*"' | head -1 | cut -d'"' -f4)
VERSION=${TAG#google-workspace/v}
curl -fsSL "https://github.com/PanthroCorp-Limited/openclaw-skills/releases/download/${TAG}/google-workspace_${VERSION}_linux_arm64.tar.gz" \
| tar -xz -C ~/.openclaw/bin/ google-workspace
chmod +x ~/.openclaw/bin/google-workspace
google-workspace config show.config set before use.--drive=readwrite requests the full drive OAuth scope, which grants broad access to all Drive files at the token level. Only enable this if the operator accepts that risk.Before using any commands, verify what is enabled:
google-workspace config show
Search messages:
google-workspace gmail search --query "from:someone@example.com" --max-results 10
Read a message by ID:
google-workspace gmail read --id MESSAGE_ID
List labels:
google-workspace gmail labels
Search or read threads:
google-workspace gmail threads --query "subject:meeting"
google-workspace gmail threads --id THREAD_ID
List available calendars:
google-workspace calendar list
List upcoming events:
google-workspace calendar events --from 2026-03-29T00:00:00Z --to 2026-04-05T23:59:59Z
Get a specific event:
google-workspace calendar event --id EVENT_ID
Create an event (only if calendar mode is readwrite):
google-workspace calendar create --summary "Team sync" --start "2026-04-01T10:00:00Z" --end "2026-04-01T11:00:00Z"
Update an event (only if calendar mode is readwrite):
google-workspace calendar update --id EVENT_ID --summary "Updated title"
Delete an event (only if calendar mode is readwrite):
google-workspace calendar delete --id EVENT_ID
List contacts:
google-workspace contacts list --max-results 50
Search contacts:
google-workspace contacts search --query "John"
Get a specific contact:
google-workspace contacts get --id "people/c1234567890"
List files:
google-workspace drive list --max-results 20
Search files:
google-workspace drive list --query "name contains 'report'" --max-results 10
Get file metadata:
google-workspace drive get --id FILE_ID
Download file content (Google Docs export as plain text, Sheets as CSV):
google-workspace drive download --id FILE_ID
List comments on a file:
google-workspace drive comments list --file-id FILE_ID
Add a comment (requires readwrite mode):
google-workspace drive comment --file-id FILE_ID --content "Looks good, approved."
Reply to a comment (requires readwrite mode):
google-workspace drive comment reply --file-id FILE_ID --comment-id COMMENT_ID --content "Thanks!"
Read a document:
google-workspace docs read --document-id DOC_ID
Insert text (requires readwrite mode):
google-workspace docs edit --document-id DOC_ID --insert-text "Hello" --index 1
Find and replace (requires readwrite mode):
google-workspace docs edit --document-id DOC_ID --find "old text" --replace-with "new text"
List sheets in a spreadsheet:
google-workspace sheets list --spreadsheet-id SPREADSHEET_ID
Read cell values:
google-workspace sheets read --spreadsheet-id SPREADSHEET_ID --range "Sheet1!A1:C10"
Write cell values (requires readwrite mode):
google-workspace sheets write --spreadsheet-id SPREADSHEET_ID --range "Sheet1!A1:B2" --values '[["Name","Score"],["Alice","95"]]'
Check if the token is valid:
google-workspace auth status
If the token has expired, ask the operator to re-authenticate by running google-workspace auth login on the host.
If authentication fails with Error 400: policy_enforced, the operator's Google account likely has Advanced Protection enabled. They will need to temporarily unenroll, complete the OAuth flow, then re-enroll. The refresh token persists across sessions.
All commands output JSON by default. Use --output text for plain text where supported.