gog は何をしますか?
gog は Gmail/カレンダー/ドライブ/連絡先/スプレッドシート/ドキュメントを操作するコマンドラインツールです。OAuth 認証のセットアップが必要です。
認証済みのホストアカウントを優先してください: まずは要求された gog コマンドを実行してください。認証エラーが発生した場合のみセットアップに入ります。チャット上でパスワード、クライアントシークレット、リフレッシュトークンを尋ねないでください。
セットアップ(初回のみ)
gog auth credentials /path/to/client_secret.jsongog auth add [email protected] --services gmail,calendar,drive,contacts,docs,sheetsgog auth list
リモート / ヘッドレス Gateway ホスト
Gateway ホストにローカルブラウザがない場合:
- Gateway ホスト上でライブコールバックリスナーを優先します。 ブラウザがあるマシンから、コールバックポートを転送し (
ssh -L <port>:127.0.0.1:<port> user@gateway-host)、gogが出力する認証 URL を開き、その転送ポートでリダイレクトを完了させます。 - ライブリスナーが利用できない場合、 オペレーターは Gateway ホスト上の信頼されたシェルで、ペーストモードのパスのいずれかを選択します。コールバック URL はチャットやエージェントのツール入力に入れてはいけません:
--manual: オペレーターが完全なリダイレクト URL をgogの対話型プロンプトにペーストします。--remote --step 1:auth_url(およびstate_reused)を出力して終了します。ブラウザでの同意後、オペレーターは信頼されたシェルで--remote --step 2 --auth-url <callback-url>を実行します。同意後のlocalhostページの読み込み失敗は想定内です。
- リモートステップ間で同じ解決済みの設定コンテキストを維持します:
GOG_CONFIG_DIRが--homeより優先され、--homeがGOG_HOMEより優先されます。また、--client、サービス/スコープ、リダイレクト URI、同意オプションも保持します。一致する期限切れでない手動状態を再利用できる場合があります (state_reused=true)。 - デスクトップキーリングが利用できない場合は、ファイルバックエンドを設定し (
gog auth keyring file)、Gateway 環境でGOG_KEYRING_PASSWORDを設定することで、非対話型のエージェントや--no-input実行がトークンを読み取れるようにします。gog auth doctorはパスワードがない場合に報告します。 - コールバックの受信はトークンの保存とは異なります。プロキシの背後でトークン交換や ID ルックアップが失敗する場合は、オペレーターが必須の Google エンドポイントに対するスコープ付きの出力またはプロキシ例外を承認した後、ステップ1から再開します。ホストネットワークポリシーをバイパスしたり、失敗または期限切れの状態を再利用したりしないでください。
診断
gog auth list --check によって報告されるすべてのエントリを検査してください。その終了ステータスは、保存されたすべてのトークンが有効であることを保証しません。同様に、gog auth doctor の終了コードだけでなく、レポートされるステータスも検査してください。
よく使うコマンド
- Gmail 検索:
gog gmail search 'newer_than:7d' --max 10 - Gmail メッセージ検索(メールごと、スレッドを無視):
gog gmail messages search "in:inbox from:ryanair.com" --max 20 --account [email protected] - Gmail 送信(プレーンテキスト):
gog gmail send --to [email protected] --subject "Hi" --body "Hello" - Gmail 送信(複数行):
gog gmail send --to [email protected] --subject "Hi" --body-file ./message.txt - Gmail 送信(標準入力):
gog gmail send --to [email protected] --subject "Hi" --body-file - - Gmail 送信(HTML):
gog gmail send --to [email protected] --subject "Hi" --body-html "<p>Hello</p>" - Gmail 下書き:
gog gmail drafts create --to [email protected] --subject "Hi" --body-file ./message.txt - Gmail 下書き送信:
gog gmail drafts send <draftId> - Gmail 返信:
gog gmail send --to [email protected] --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 7 - カレンダー イベント更新:
gog calendar update <calendarId> <eventId> --summary "New Title" --event-color 4 - カレンダー 色一覧:
gog calendar colors - ドライブ検索:
gog drive search "query" --max 10 - 連絡先:
gog contacts list --max 20 - スプレッドシート取得:
gog sheets get <sheetId> "Tab!A1:D10" --json - スプレッドシート更新:
gog sheets update <sheetId> "Tab!A1:B2" --values-json '[['"A"',"B"'],['"1"',"2"']]' --input USER_ENTERED - スプレッドシート追加:
gog sheets append <sheetId> "Tab!A:C" --values-json '[['"x"','"y"','"z"']]' --insert INSERT_ROWS - スプレッドシートクリア:
gog sheets clear <sheetId> "Tab!A2:Z" - スプレッドシートメタデータ:
gog sheets metadata <sheetId> --json - ドキュメントエクスポート:
gog docs export <docId> --format txt --out /tmp/doc.txt - ドキュメント表示:
gog docs cat <docId>
カレンダーの色
gog calendar colorsで利用可能なすべてのイベント色(ID 1-11)を確認できます--event-color <id>フラグでイベントに色を追加します- イベント色 ID(
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
メールの書式設定
-
プレーンテキストを推奨します。複数段落のメッセージには
--body-fileを使用します(標準入力の場合は--body-file -)。 -
同じ
--body-fileパターンが下書きと返信でも使えます。 -
--bodyは\nをエスケープ解除しません。インラインで改行が必要な場合は、ヒアドキュメントまたは$'Line 1\n\nLine 2'を使用します。 -
リッチな書式設定が必要な場合のみ
--body-htmlを使用します。 -
HTML タグ:
<p>は段落、<br>は改行、<strong>は太字、<em>はイタリック、<a href="url">はリンク、<ul>/<li>はリスト。 -
例(標準入力からのプレーンテキスト):
gog gmail send --to [email protected] \ --subject "Meeting Follow-up" \ --body-file - <<'EOF' Hi Name, Thanks for meeting today. Next steps: - Item one - Item two Best regards, Your Name EOF -
例(HTML リスト):
gog gmail send --to [email protected] \ --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>"
注意事項
[email protected]を設定すると、--accountの指定を省略できます。- スクリプト化する場合は、
--jsonと--no-inputを推奨します。 - スプレッドシートの値は、
--values-json(推奨)またはインライン行として渡せます。 - ドキュメントはエクスポート/表示/コピーに対応しています。インプレース編集には Docs API クライアントが必要です(gog には含まれていません)。
gog gmail searchはスレッドごとに1行を返します。個々のメールを1件ずつ返してほしい場合は、gog gmail messages searchを使用してください。