gog

Interface en ligne de commande Google Workspace pour Gmail, Agenda, Drive, Contacts, Sheets et Docs.

Qu'est-ce que gog ?

gog est un outil en ligne de commande pour Google Workspace qui permet d'interagir avec Gmail, Agenda, Drive, Contacts, Sheets et Docs depuis le terminal. Il nécessite une configuration OAuth initiale et est particulièrement utile pour les développeurs, les agents d'IA et les scripts automatisés. L'outil prend en charge les hôtes distants et sans affichage graphique avec des mécanismes d'authentification flexibles (callback en direct, mode manuel, mode distant). Il offre des fonctionnalités complètes : recherche et envoi d'e-mails (texte brut, HTML, pièces jointes), création et mise à jour d'événements d'agenda avec couleurs, recherche dans Drive, gestion des contacts, lecture et écriture dans Sheets, et export de Docs. Les commandes sont conçues pour être exécutées directement dans le terminal ou via des scripts avec les options `--json` et `--no-input`. L'outil expose des diagnostics détaillés via `gog auth list --check` et `gog auth doctor` pour valider l'état des jetons d'authentification. Des astuces d'utilisation avancée incluent la définition de `GOG_ACCOUNT` pour éviter de répéter le paramètre `--account` et l'utilisation de fichiers de corps pour les messages multilignes.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/skills/gog

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait gog ?

Utilisez gog pour Gmail / Agenda / Drive / Contacts / Sheets / Docs. Nécessite une configuration OAuth.

Privilégiez un compte hôte déjà autorisé : exécutez d'abord la commande gog demandée. Ne passez à la configuration qu'après une erreur d'authentification. Ne demandez jamais les mots de passe, les secrets client ou les jetons d'actualisation dans le chat.

Configuration (une fois)

  • gog auth credentials /chemin/vers/client_secret.json
  • gog auth add [email protected] --services gmail,calendar,drive,contacts,docs,sheets
  • gog auth list

Hôtes distants / sans affichage (Gateway)

Lorsque l'hôte Gateway ne dispose pas d'affichage local dans un navigateur :

  1. Privilégiez un écouteur de rappel en direct sur l'hôte Gateway. Depuis la machine disposant du navigateur, redirigez le port exact du rappel (ssh -L <port>:127.0.0.1:<port> utilisateur@gateway-host), ouvrez l'URL d'autorisation que gog affiche, et laissez la redirection se terminer sur ce port redirigé.
  2. Lorsqu'un écouteur en direct n'est pas disponible, l'opérateur choisit un chemin en mode collage dans un shell de confiance sur l'hôte Gateway. Les URL de rappel ne doivent jamais être saisies dans le chat ou l'entrée d'outil de l'agent :
    • --manual : l'opérateur colle l'URL de redirection complète dans l'invite interactive de gog.
    • --remote --step 1 : affiche auth_url (et state_reused) puis se termine. Après le consentement du navigateur, l'opérateur exécute --remote --step 2 --auth-url <callback-url> dans le shell de confiance. Un échec de chargement de la page localhost après le consentement est normal.
  3. Conservez le même contexte de configuration résolu entre les étapes distantes : GOG_CONFIG_DIR a priorité sur --home, qui a priorité sur GOG_HOME. Préservez également --client, les services / étendues (scopes), l'URI de redirection et les options de consentement. Un état manuel non expiré correspondant peut être réutilisé (state_reused=true).
  4. Si le trousseau de bureau n'est pas disponible, configurez le backend fichier (gog auth keyring file) et définissez GOG_KEYRING_PASSWORD dans l'environnement Gateway afin que les exécutions non interactives de l'agent / --no-input puissent lire les jetons. gog auth doctor signale quand le mot de passe est manquant.
  5. La réception du rappel n'équivaut pas au stockage du jeton. Si l'échange de jeton ou la recherche d'identité échoue derrière un proxy, redémarrez à partir de l'étape 1 après que l'opérateur a approuvé les exceptions de portée de sortie ou de proxy pour les points de terminaison Google requis. Ne contournez pas la politique réseau de l'hôte et ne réutilisez pas un état expiré ou ayant échoué.

Pour le diagnostic, inspectez chaque entrée signalée par gog auth list --check ; son code de sortie ne prouve pas que chaque jeton stocké est valide. De même, inspectez l'état signalé par gog auth doctor plutôt que de vous fier uniquement à son code de sortie.

Commandes courantes

  • Recherche Gmail : gog gmail search 'newer_than:7d' --max 10
  • Recherche de messages Gmail (par e-mail, ignore le threading) : gog gmail messages search "in:inbox from:ryanair.com" --max 20 --account [email protected]
  • Envoi Gmail (texte simple) : gog gmail send --to [email protected] --subject "Bonjour" --body "Salut"
  • Envoi Gmail (multiligne) : gog gmail send --to [email protected] --subject "Bonjour" --body-file ./message.txt
  • Envoi Gmail (stdin) : gog gmail send --to [email protected] --subject "Bonjour" --body-file -
  • Envoi Gmail (HTML) : gog gmail send --to [email protected] --subject "Bonjour" --body-html "<p>Salut</p>"
  • Brouillon Gmail : gog gmail drafts create --to [email protected] --subject "Bonjour" --body-file ./message.txt
  • Envoi du brouillon Gmail : gog gmail drafts send <draftId>
  • Réponse Gmail : gog gmail send --to [email protected] --subject "Re: Bonjour" --body "Réponse" --reply-to-message-id <msgId>
  • Agenda - lister les événements : gog calendar events <calendarId> --from <iso> --to <iso>
  • Agenda - créer un événement : gog calendar create <calendarId> --summary "Titre" --from <iso> --to <iso>
  • Agenda - créer avec couleur : gog calendar create <calendarId> --summary "Titre" --from <iso> --to <iso> --event-color 7
  • Agenda - mettre à jour un événement : gog calendar update <calendarId> <eventId> --summary "Nouveau titre" --event-color 4
  • Agenda - afficher les couleurs : gog calendar colors
  • Drive - recherche : gog drive search "requête" --max 10
  • Contacts : gog contacts list --max 20
  • Sheets - obtenir : gog sheets get <sheetId> "Tab!A1:D10" --json
  • Sheets - mettre à jour : gog sheets update <sheetId> "Tab!A1:B2" --values-json '[["A","B"],["1","2"]]' --input USER_ENTERED
  • Sheets - ajouter : gog sheets append <sheetId> "Tab!A:C" --values-json '[["x","y","z"]]' --insert INSERT_ROWS
  • Sheets - effacer : gog sheets clear <sheetId> "Tab!A2:Z"
  • Sheets - métadonnées : gog sheets metadata <sheetId> --json
  • Docs - exporter : gog docs export <docId> --format txt --out /tmp/doc.txt
  • Docs - afficher : gog docs cat <docId>

Couleurs de l'agenda

  • Utilisez gog calendar colors pour voir toutes les couleurs d'événement disponibles (IDs 1 à 11)
  • Ajoutez des couleurs aux événements avec l'option --event-color <id>
  • IDs des couleurs d'événement (d'après la sortie de gog calendar colors) :
    • 1 : #a4bdfc
    • 2 : #7ae7bf
    • 3 : #dbadff
    • 4 : #ff887c
    • 5 : #fbd75b
    • 6 : #ffb878
    • 7 : #46d6db
    • 8 : #e1e1e1
    • 9 : #5484ed
    • 10 : #51b749
    • 11 : #dc2127

Mise en forme des e-mails

  • Privilégiez le texte brut. Utilisez --body-file pour les messages de plusieurs paragraphes (ou --body-file - pour l'entrée standard).

  • Le même modèle --body-file fonctionne pour les brouillons et les réponses.

  • --body n'échappe pas \n. Si vous avez besoin de sauts de ligne en ligne, utilisez un heredoc ou $'Ligne 1\n\nLigne 2'.

  • Utilisez --body-html uniquement lorsque vous avez besoin d'une mise en forme enrichie.

  • Balises HTML : <p> pour les paragraphes, <br> pour les sauts de ligne, <strong> pour le gras, <em> pour l'italique, <a href="url"> pour les liens, <ul>/<li> pour les listes.

  • Exemple (texte brut via stdin) :

    gog gmail send --to [email protected] \
      --subject "Relance de réunion" \
      --body-file - <<'EOF'
    Bonjour Nom,
    
    Merci pour notre réunion d'aujourd'hui. Prochaines étapes :
    - Élément un
    - Élément deux
    
    Cordialement,
    Votre Nom
    EOF
    
  • Exemple (liste HTML) :

    gog gmail send --to [email protected] \
      --subject "Relance de réunion" \
      --body-html "<p>Bonjour Nom,</p><p>Merci pour notre réunion d'aujourd'hui. Voici les prochaines étapes :</p><ul><li>Élément un</li><li>Élément deux</li></ul><p>Cordialement,<br>Votre Nom</p>"
    

Remarques

  • Définissez [email protected] pour éviter de répéter --account.
  • Pour les scripts, privilégiez --json accompagné de --no-input.
  • Les valeurs Sheets peuvent être transmises via --values-json (recommandé) ou sous forme de lignes en ligne.
  • Docs prend en charge l'exportation, l'affichage et la copie. Les modifications en place nécessitent un client de l'API Docs (non inclus dans gog).
  • gog gmail search renvoie une ligne par fil de discussion ; utilisez gog gmail messages search lorsque vous avez besoin de chaque e-mail individuel renvoyé séparément.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

Skills associés