复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-gog-3c5b8567dee0 ,按照其中的说明把「gog」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Use gog for Gmail/Calendar/Drive/Contacts/Sheets/Docs. Requires OAuth setup.
Prefer an already-authorized host account: run the requested gog command first. Enter setup only after an authentication error. Never ask for passwords, client secrets, or refresh tokens in chat.
Setup (once)
gog auth credentials /path/to/client_secret.jsongog auth add you@gmail.com --services gmail,calendar,drive,contacts,docs,sheetsgog auth listRemote / headless Gateway hosts
When the Gateway host has no local browser display:
ssh -L <port>:127.0.0.1:<port> user@gateway-host), open the authorization URL gog prints, and let the redirect complete on that forwarded port.--manual: the operator pastes the full redirect URL into gog's interactive prompt.--remote --step 1: prints auth_url (and state_reused) then exits. After browser consent, the operator runs --remote --step 2 --auth-url <callback-url> in the trusted shell. A failed localhost page load after consent is expected.GOG_CONFIG_DIR takes precedence over --home, which takes precedence over GOG_HOME. Also preserve --client, services/scopes, redirect URI, and consent options. Matching unexpired manual state may be reused (state_reused=true).gog auth keyring file) and set GOG_KEYRING_PASSWORD in the Gateway environment so non-interactive agent/--no-input runs can read tokens. gog auth doctor reports when the password is missing.For diagnostics, inspect every entry reported by gog auth list --check; its exit status does not prove every stored token is valid. Likewise, inspect the status reported by gog auth doctor rather than relying only on its exit code.
Common commands
gog gmail search 'newer_than:7d' --max 10gog gmail messages search "in:inbox from:ryanair.com" --max 20 --account you@example.comgog gmail send --to a@b.com --subject "Hi" --body "Hello"gog gmail send --to a@b.com --subject "Hi" --body-file ./message.txtgog gmail send --to a@b.com --subject "Hi" --body-file -gog gmail send --to a@b.com --subject "Hi" --body-html "<p>Hello</p>"gog gmail drafts create --to a@b.com --subject "Hi" --body-file ./message.txtgog gmail drafts send <draftId>gog gmail send --to a@b.com --subject "Re: Hi" --body "Reply" --reply-to-message-id <msgId>gog calendar events <calendarId> --from <iso> --to <iso>gog calendar create <calendarId> --summary "Title" --from <iso> --to <iso>gog calendar create <calendarId> --summary "Title" --from <iso> --to <iso> --event-color 7gog calendar update <calendarId> <eventId> --summary "New Title" --event-color 4gog calendar colorsgog drive search "query" --max 10gog contacts list --max 20gog sheets get <sheetId> "Tab!A1:D10" --jsongog sheets update <sheetId> "Tab!A1:B2" --values-json '[["A","B"],["1","2"]]' --input USER_ENTEREDgog sheets append <sheetId> "Tab!A:C" --values-json '[["x","y","z"]]' --insert INSERT_ROWSgog sheets clear <sheetId> "Tab!A2:Z"gog sheets metadata <sheetId> --jsongog docs export <docId> --format txt --out /tmp/doc.txtgog docs cat <docId>Calendar Colors
gog calendar colors to see all available event colors (IDs 1-11)--event-color <id> flaggog calendar colors output):
Email Formatting
Prefer plain text. Use --body-file for multi-paragraph messages (or --body-file - for stdin).
Same --body-file pattern works for drafts and replies.
--body does not unescape \n. If you need inline newlines, use a heredoc or $'Line 1\n\nLine 2'.
Use --body-html only when you need rich formatting.
HTML tags: <p> for paragraphs, <br> for line breaks, <strong> for bold, <em> for italic, <a href="url"> for links, <ul>/<li> for lists.
Example (plain text via stdin):
gog gmail send --to recipient@example.com \
--subject "Meeting Follow-up" \
--body-file - <<'EOF'
Hi Name,
Thanks for meeting today. Next steps:
- Item one
- Item two
Best regards,
Your Name
EOF
Example (HTML list):
gog gmail send --to recipient@example.com \
--subject "Meeting Follow-up" \
--body-html "<p>Hi Name,</p><p>Thanks for meeting today. Here are the next steps:</p><ul><li>Item one</li><li>Item two</li></ul><p>Best regards,<br>Your Name</p>"
Notes
GOG_ACCOUNT=you@gmail.com to avoid repeating --account.--json plus --no-input.--values-json (recommended) or as inline rows.gog gmail search returns one row per thread; use gog gmail messages search when you need every individual email returned separately.