Personal assistant for Google Workspace using gog CLI. Search Gmail, manage Calendar, organize Drive, update Sheets, track Tasks, and lookup Contacts. Use when triaging email, scheduling meetings, finding availability, searching documents, managing tasks, or any Google service interaction from the terminal.
A comprehensive skill for managing Google Workspace services via the gog CLI. Designed for Personal Assistant and Chief of Staff workflows with emphasis on efficient searching, filtering, and querying.
When to Use This Skill
Triaging and processing email inbox
Scheduling meetings and managing calendar events
Finding availability across multiple calendars
Searching and organizing Google Drive documents
Managing task lists and to-dos
Looking up and managing contacts
Reading/writing data in Google Sheets
Exporting Docs, Slides, or Sheets
Setting focus time or out-of-office status
Prerequisites
Ensure gog is installed and authenticated:
bash
# Check installation
gog version
# Check authentication status
gog auth status
# Verify account access
gog people me
# Add a new account if needed
gog auth add your@email.com --services=all
Quick Start
Gmail
bash
# Search unread emails
gog gmail search "is:unread" --max=20
# Search from specific sender
gog gmail search "from:boss@company.com newer_than:7d"
# Send an email
gog gmail send --to="recipient@example.com" --subject="Subject" --body="Message body"
# Reply to a thread
gog gmail send --reply-to-message-id=MESSAGE_ID --body="Reply text"
# Get message details
gog gmail get MESSAGE_ID
# List files in root
gog drive ls
# Search for documents
gog drive search "quarterly report"
# Download a file
gog drive download FILE_ID
# Upload a file
gog drive upload /path/to/file.pdf --parent=FOLDER_ID
# Get shareable URL
gog drive url FILE_ID
Tasks
bash
# List task lists
gog tasks lists list
# View tasks in default list
gog tasks list @default
# Add a task
gog tasks add @default --title="Review report" --due="2026-01-15"
# Mark task complete
gog tasks done @default TASK_ID
Sheets
bash
# Read a range
gog sheets get SPREADSHEET_ID "Sheet1!A1:D10"
# Update values
gog sheets update SPREADSHEET_ID "Sheet1!A1" "Value1" "Value2"
# Append a row
gog sheets append SPREADSHEET_ID "Sheet1!A:D" "Col1" "Col2" "Col3" "Col4"
Gmail Search Syntax
Gmail search is powerful. Here are the essential operators:
Sender & Recipient
Operator
Example
Description
from:
from:boss@company.com
Emails from sender
to:
to:team@company.com
Emails sent to recipient
cc:
cc:manager@company.com
CC'd recipient
bcc:
bcc:archive@company.com
BCC'd recipient
Status & Labels
Operator
Example
Description
is:unread
is:unread
Unread messages
is:read
is:read
Read messages
is:starred
is:starred
Starred messages
is:important
is:important
Marked important
is:snoozed
is:snoozed
Snoozed messages
label:
label:work
Has specific label
in:inbox
in:inbox
In inbox
in:sent
in:sent
In sent folder
in:drafts
in:drafts
In drafts
in:trash
in:trash
In trash
in:spam
in:spam
In spam
in:anywhere
in:anywhere
All mail including spam/trash
Content & Subject
Operator
Example
Description
subject:
subject:urgent
Subject contains word
"exact phrase"
"quarterly report"
Exact phrase match
has:attachment
has:attachment
Has any attachment
filename:
filename:pdf
Attachment filename/type
filename:
filename:report.xlsx
Specific filename
Date & Time
Operator
Example
Description
newer_than:
newer_than:7d
Within last N days
older_than:
older_than:1y
Older than N years
after:
after:2026/01/01
After specific date
before:
before:2026/12/31
Before specific date
Units for newer_than/older_than: d (day), m (month), y (year)
Size
Operator
Example
Description
larger:
larger:5M
Larger than size
smaller:
smaller:100K
Smaller than size
Units: K (KB), M (MB)
Categories
Operator
Example
Description
category:primary
category:primary
Primary inbox
category:social
category:social
Social category
category:promotions
category:promotions
Promotions
category:updates
category:updates
Updates
category:forums
category:forums
Forums
Boolean Operators
Operator
Example
Description
AND (or space)
from:alice subject:report
Both conditions
OR
from:alice OR from:bob
Either condition
- (NOT)
-category:promotions
Exclude condition
()
(from:alice OR from:bob) is:unread
Grouping
{}
{from:alice from:bob}
OR shorthand
Example Queries
bash
# Unread from VIPs this week
gog gmail search "is:unread from:(boss@company.com OR ceo@company.com) newer_than:7d"
# Large attachments
gog gmail search "has:attachment larger:10M"
# Urgent subjects excluding promotions
gog gmail search "subject:(urgent OR asap OR EOD) -category:promotions is:unread"
# Contracts from legal team
gog gmail search "from:legal@company.com subject:contract has:attachment filename:pdf"
# All messages in a thread (use thread ID from search results)
gog gmail thread get THREAD_ID