gsuite-sdkInteract with Google Workspace APIs (Gmail, Calendar, Drive, Sheets) using gsuite-sdk.
Install via ClawdBot CLI:
clawdbot install PabloAlaniz/gsuite-sdkSkill para interactuar con Google Workspace APIs (Gmail, Calendar, Drive, Sheets) usando gsuite-sdk.
pip install gsuite-sdk
Con extras opcionales:
pip install gsuite-sdk[cloudrun] # Para Secret Manager
pip install gsuite-sdk[all] # Todas las dependencias
El usuario debe obtener credentials.json de Google Cloud Console y luego autenticarse:
# Via CLI
gsuite auth login
# O via Python (abre navegador)
from gsuite_core import GoogleAuth
auth = GoogleAuth()
auth.authenticate()
Ver GETTING_CREDENTIALS.md para guía completa.
Una vez autenticado, los tokens se guardan localmente y se refrescan automáticamente:
from gsuite_core import GoogleAuth
auth = GoogleAuth()
if auth.is_authenticated():
# Listo para usar
pass
else:
# Necesita autenticarse (abre navegador)
auth.authenticate()
from gsuite_core import GoogleAuth
from gsuite_gmail import Gmail, query
auth = GoogleAuth()
gmail = Gmail(auth)
# Mensajes no leídos
for msg in gmail.get_unread(max_results=10):
print(f"De: {msg.sender}")
print(f"Asunto: {msg.subject}")
print(f"Fecha: {msg.date}")
print(f"Preview: {msg.body[:200]}...")
print("---")
# Buscar con query builder
mensajes = gmail.search(
query.from_("notifications@github.com") &
query.newer_than(days=7)
)
# Marcar como leído
msg.mark_as_read()
gmail.send(
to=["destinatario@example.com"],
subject="Asunto del email",
body="Contenido del mensaje",
)
# Con adjuntos
gmail.send(
to=["user@example.com"],
subject="Reporte",
body="Adjunto el reporte.",
attachments=["reporte.pdf"],
)
from gsuite_core import GoogleAuth
from gsuite_calendar import Calendar
auth = GoogleAuth()
calendar = Calendar(auth)
# Eventos de hoy
for event in calendar.get_today():
print(f"{event.start.strftime('%H:%M')} - {event.summary}")
# Próximos 7 días
for event in calendar.get_upcoming(days=7):
print(f"{event.start}: {event.summary}")
if event.location:
print(f" 📍 {event.location}")
# Rango específico
from datetime import datetime
events = calendar.get_events(
time_min=datetime(2026, 2, 1),
time_max=datetime(2026, 2, 28),
)
from datetime import datetime
calendar.create_event(
summary="Reunión de equipo",
start=datetime(2026, 2, 15, 10, 0),
end=datetime(2026, 2, 15, 11, 0),
location="Sala de conferencias",
)
# Con asistentes
calendar.create_event(
summary="Sync semanal",
start=datetime(2026, 2, 15, 14, 0),
end=datetime(2026, 2, 15, 15, 0),
attendees=["alice@company.com", "bob@company.com"],
send_notifications=True,
)
from gsuite_core import GoogleAuth
from gsuite_drive import Drive
auth = GoogleAuth()
drive = Drive(auth)
# Listar archivos recientes
for file in drive.list_files(max_results=20):
print(f"{file.name} ({file.mime_type})")
# Buscar
files = drive.list_files(query="name contains 'reporte'")
# Descargar
file = drive.get("file_id_aqui")
file.download("/tmp/archivo.pdf")
# Subir archivo
uploaded = drive.upload("documento.pdf")
print(f"Link: {uploaded.web_view_link}")
# Subir a carpeta específica
uploaded = drive.upload("data.xlsx", parent_id="folder_id")
# Crear carpeta
folder = drive.create_folder("Reportes 2026")
drive.upload("q1.pdf", parent_id=folder.id)
from gsuite_core import GoogleAuth
from gsuite_sheets import Sheets
auth = GoogleAuth()
sheets = Sheets(auth)
# Abrir spreadsheet
spreadsheet = sheets.open("SPREADSHEET_ID")
# Leer worksheet
ws = spreadsheet.worksheet("Sheet1")
data = ws.get("A1:D10") # Lista de listas
# Como diccionarios (primera fila = headers)
records = ws.get_all_records()
# [{"Nombre": "Alice", "Edad": 30}, ...]
# Actualizar celda
ws.update("A1", "Nuevo valor")
# Actualizar rango
ws.update("A1:C2", [
["Nombre", "Edad", "Ciudad"],
["Alice", 30, "NYC"],
])
# Agregar filas al final
ws.append([
["Bob", 25, "LA"],
["Charlie", 35, "Chicago"],
])
Si instalaste gsuite-cli:
# Autenticación
gsuite auth login
gsuite auth status
# Gmail
gsuite gmail list --unread
gsuite gmail send --to user@example.com --subject "Hola" --body "Mundo"
# Calendar
gsuite calendar today
gsuite calendar list --days 7
# Drive
gsuite drive list
gsuite drive upload archivo.pdf
# Sheets
gsuite sheets read SPREADSHEET_ID --range "A1:C10"
tokens.db y se refrescan automáticamente--scopesCredentialsNotFoundError: Falta credentials.jsonTokenRefreshError: Token expiró y no se pudo refrescar (re-autenticar)NotFoundError: Recurso no existe o sin permisosAI Usage Analysis
Analysis is being generated… refresh in a few seconds.
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Query Google Places API (New) via the goplaces CLI for text search, place details, resolve, and reviews. Use for human-friendly place lookup or JSON output for scripts.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Gmail, Calendar, Drive, Docs, Sheets — NO Google Cloud Console required. Just OAuth sign-in. Zero setup complexity vs traditional Google API integrations.
Google Drive API integration with managed OAuth. List, search, create, and manage files and folders. Use this skill when users want to interact with Google D...
Google Sheets API integration with managed OAuth. Read and write spreadsheet data, create sheets, apply formatting, and manage ranges. Use this skill when users want to read from or write to Google Sheets. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).