gogcli(gog コマンド)の専門家スキル。Google Workspaceの13サービス(Gmail, Calendar, Drive, Sheets, Docs, Slides, Contacts, Tasks, Chat, Groups, Keep, Classroom, People)をターミナルから操作するGoベースCLIツールの使い方を支援。OAuth2/サービスアカウント認証、マルチアカウント管理、自動化パターンを提供。Use when working with Google Workspace services via CLI, managing Gmail/Calendar/Drive/Sheets, automating Google Workspace tasks, or setting up gogcli authentication.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill gogcli-expert --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Gogcli Expert?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-gogcli-expert)More formats (shields.io, HTML) on the badges page.
---
name: gogcli-expert
description: gogcli(gog コマンド)の専門家スキル。Google Workspaceの13サービス(Gmail, Calendar, Drive, Sheets, Docs, Slides, Contacts, Tasks, Chat, Groups, Keep, Classroom, People)をターミナルから操作するGoベースCLIツールの使い方を支援。OAuth2/サービスアカウント認証、マルチアカウント管理、自動化パターンを提供。Use when working with Google Workspace services via CLI, managing Gmail/Calendar/Drive/Sheets, automating Google Workspace tasks, or setting up gogcli authentication.
---
# gogcli Expert
## Overview
gogcli(コマンド名: `gog`)は、Google Workspaceの13サービスをターミナルから操作するGoベースのCLIツールです。steipete/gogcli リポジトリで開発されています。
**対応サービス:**
| カテゴリ | サービス |
|---------|---------|
| Communication | Gmail, Calendar, Chat [Workspace only] |
| Productivity | Drive, Sheets, Docs, Slides, Tasks, Keep [Workspace + SA only] |
| Workspace Admin | Groups [Workspace only], Classroom, People, Contacts |
| Utility | Time(UTC/ローカル時刻表示) |
**主要特徴:**
- OAuth2 + サービスアカウント認証
- マルチアカウント・マルチクライアント対応
- `--json` / `--plain` 出力(パイプライン統合に最適)
- OSキーリングまたは暗号化ファイルによる認証情報の安全な保管
- シェル補完(Bash, Zsh, Fish, PowerShell)
## Prerequisites
このスキルを使用する前に以下を準備してください:
1. **gogcli のインストール**
- macOS/Linux: `brew install steipete/tap/gogcli`
- または GitHub からソースビルド
2. **Google Cloud Console でのセットアップ**
- Google Cloud プロジェクト(作成済みまたは新規)
- 必要な API の有効化(Gmail API, Calendar API, Drive API 等)
- OAuth 同意画面の設定(テストユーザー追加)
- OAuth2 クライアント ID(デスクトップアプリケーションタイプ)の作成
- クレデンシャル JSON のダウンロード
3. **初期認証**
- `gog auth credentials <path-to-json>` でクレデンシャル登録
- `gog auth add <email>` でアカウント認証
## Workflow
gogcli を使った基本的なワークフロー:
```
1. セットアップ
└─> gog auth credentials ~/client_secret.json
└─> gog auth add user@gmail.com
└─> gog auth status # 認証確認
2. 日常操作
├─> Gmail: gog gmail threads / gog gmail send
├─> Calendar: gog calendar events --today
├─> Drive: gog drive list / gog drive download
└─> Sheets: gog sheets get <id>
3. 自動化・スクリプト統合
└─> --json 出力 + jq でパース
└─> CI/CD: GOG_KEYRING_PASSWORD + --no-input
4. マルチアカウント管理
└─> gog auth alias set work user@company.com
└─> gog --account work <command>
```
## When to Use This Skill
このスキルを使用するタイミング:
- gogcli(gog コマンド)のインストール・セットアップ方法を知りたい
- Google Workspace サービスをCLIから操作したい
- Gmail の検索・送信・ラベル管理をターミナルで行いたい
- Calendar のイベント管理・空き時間確認をCLIで行いたい
- Drive のファイル操作・権限管理をCLIで自動化したい
- Sheets の読み書き・書式設定をスクリプトで行いたい
- OAuth2 認証やサービスアカウントの設定方法を知りたい
- マルチアカウント環境の設定方法を知りたい
- gogcli のエラーやトラブルを解決したい
**Example triggers:**
- "gog コマンドで Gmail を検索するには?"
- "gogcli でカレンダーのイベントを作成したい"
- "Drive のファイルをダウンロードするコマンドは?"
- "Sheets のデータを読み取るには?"
- "gogcli の認証設定を教えて"
- "gog コマンドでメール送信したい"
- "Google Workspace の CLI ツールを使いたい"
- "How do I search Gmail with gogcli?"
- "How to set up gogcli service account?"
## Installation
```bash
# macOS/Linux (Homebrew)
brew install steipete/tap/gogcli
# ソースからビルド
git clone https://github.com/steipete/gogcli.git
cd gogcli && make
./bin/gog --help
# バージョン確認
gog --version
```
### Shell Completions
```bash
# Bash
gog completion bash > $(brew --prefix)/etc/bash_completion.d/gog
# Zsh
gog completion zsh > "${fpath[1]}/_gog"
# Fish
gog completion fish > ~/.config/fish/completions/gog.fish
# PowerShell
gog completion powershell > gog.ps1
```
### Google Cloud Console Setup
gogcli を利用するには、Google Cloud Console で OAuth2 クレデンシャルを準備する必要があります:
1. Google Cloud Console でプロジェクトを作成(または既存プロジェクトを選択)
2. 必要な API を有効化(Gmail API, Calendar API, Drive API 等)
3. OAuth 同意画面を設定し、テストユーザーを追加
4. 「デスクトップアプリケーション」タイプのOAuth2クライアントIDを作成
5. クレデンシャル JSON をダウンロード
## Authentication Setup
### OAuth2 Basic Setup
```bash
# 1. クレデンシャルJSONを登録
gog auth credentials ~/Downloads/client_secret.json
# 2. アカウントを認証(ブラウザが開く)
gog auth add user@gmail.com
# 3. 認証確認
gog auth list
# 4. デフォルトアカウント確認
gog auth status
```
### Scope Control
認証時にサービスを限定できます(最小権限の原則):
```bash
# 特定サービスのみ認証
gog auth add user@gmail.com --services drive,calendar
# 読み取り専用モード
gog auth add user@gmail.com --readonly
# Drive 固有のスコープ制御
gog auth add user@gmail.com --drive-scope full # 完全アクセス
gog auth add user@gmail.com --drive-scope readonly # 読み取り/ダウンロード/エクスポートのみ
gog auth add user@gmail.com --drive-scope file # アプリ作成ファイルのみ書き込み可
```
### Adding Services Later
後からサービスを追加する場合、`--force-consent` が必要なことがあります:
```bash
gog auth add user@gmail.com --services sheets --force-consent
```
### Multiple Accounts
```bash
# 複数アカウントを追加
gog auth add personal@gmail.com
gog auth add work@company.com
# アカウント指定で実行
gog --account work@company.com calendar events --today
# エイリアス設定
gog auth alias set work work@company.com
gog auth alias set personal personal@gmail.com
gog auth alias list
# エイリアスで実行
gog --account work calendar events --today
# デフォルトアカウントを環境変数で設定
export GOG_ACCOUNT=work
```
### Multiple OAuth Clients
組織ごとに異なるOAuthクライアントを使用する場合:
```bash
# クライアント名付きでクレデンシャル登録
gog --client work auth credentials ~/work-client-secret.json
gog --client personal auth credentials ~/personal-client-secret.json
# クライアント指定で認証
gog --client work auth add user@company.com
gog --client personal auth add user@gmail.com
```
**ドメインマッピング(config.json):**
```json5
{
account_clients: { "user@company.com": "work" },
client_domains: { "company.com": "work" }
}
```
### Service Account (Workspace Only)
ドメイン全体の委任(Domain-Wide Delegation)を使用する場合:
```bash
# サービスアカウント設定
gog auth service-account set admin@domain.com --key ~/service-account.json
# サービスアカウントが OAuth よりも優先される
# 確認
gog auth list
```
**前提条件:**
1. Google Cloud Console でサービスアカウントを作成
2. キーファイル(JSON)をダウンロード
3. Workspace 管理コンソールでドメイン全体の委任を設定
4. 必要なスコープを許可リストに追加
### Keyring Configuration
```bash
# キーリングバックエンド確認
gog auth keyring
# バックエンド設定(auto / keychain / file)
gog auth keyring auto # プラットフォーム最適(デフォルト)
gog auth keyring keychain # macOS Keychain
gog auth keyring file # 暗号化ファイル(パスワード必要)
# CI/非対話環境用
export GOG_KEYRING_PASSWORD='your-secure-password'
```
## Core Services -- Communication
### Gmail
**スレッド・メッセージ検索:**
```bash
# 受信トレイの最新スレッド
gog gmail threads
# Gmail 検索構文で検索
gog gmail threads --query "from:boss@company.com subject:report"
gog gmail threads --query "is:unread after:2025/01/01"
gog gmail threads --query "has:attachment filename:pdf"
# メッセージ詳細表示
gog gmail messages --thread-id <thread-id>
gog gmail message <message-id>
```
**メール送信:**
```bash
# 基本送信
gog gmail send --to recipient@example.com --subject "件名" --body "本文"
# CC/BCC付き
gog gmail send --to a@example.com --cc b@example.com --bcc c@example.com \
--subject "件名" --body "本文"
# HTML本文
gog gmail send --to recipient@example.com --subject "Report" --body-html "<h1>Report</h1><p>Details...</p>"
# 添付ファイル付き
gog gmail send --to recipient@example.com --subject "資料" --body "添付をご確認ください" \
--attach report.pdf --attach data.xlsx
# 開封トラッキング(要事前設定)
gog gmail send --to recipient@example.com --body-html "<p>Hi</p>" --track
```
**ラベル管理:**
```bash
# ラベル一覧
gog gmail labels
# ラベル作成
gog gmail label create "Projects/Active"
# メッセージにラベル適用
gog gmail label apply <message-id> --label "Projects/Active"
```
**その他の機能:**
```bash
# 下書き
gog gmail drafts
gog gmail draft create --to recipient@example.com --subject "下書き" --body "内容"
# フィルタ
gog gmail filters
# 不在応答(バケーション設定)
gog gmail vacation --enable --subject "不在のお知らせ" --body "現在不在です"
gog gmail vacation --disable
# 委任
gog gmail delegates
```
### Calendar
**イベント管理:**
```bash
# 今日のイベント
gog calendar events --today
# 期間指定
gog calendar events --from 2025-02-01 --to 2025-02-28
# 今後7日間
gog calendar events --next 7d
# イベント作成
gog calendar event create --summary "ミーティング" \
--start "2025-02-01T10:00:00" --end "2025-02-01T11:00:00" \
--attendees "a@example.com,b@example.com"
# イベント更新
gog calendar event update <event-id> --summary "更新後のタイトル"
# イベント削除
gog calendar event delete <event-id>
```
**スケジュール管理:**
```bash
# 競合検出
gog calendar conflicts --from 2025-02-01 --to 2025-02-07
# 空き時間確認(Free/Busy)
gog calendar freebusy --emails "a@example.com,b@example.com" \
--from 2025-02-01 --to 2025-02-07
# カレンダー一覧
gog calendar list
```
**特殊イベント:**
```bash
# フォーカスタイム
gog calendar event create --summary "Focus Time" --event-type focusTime \
--start "2025-02-01T09:00:00" --end "2025-02-01T12:00:00"
# 不在(Out of Office)
gog calendar event create --summary "OOO" --event-type outOfOffice \
--start "2025-02-10" --end "2025-02-14"
# 繰り返しイベント
gog calendar event create --summary "Weekly Standup" \
--start "2025-02-03T09:00:00" --end "2025-02-03T09:30:00" \
--recurrence "RRULE:FREQ=WEEKLY;BYDAY=MO"
```
### Chat [Workspace Only]
```bash
# スペース一覧
gog chat spaces
# メッセージ一覧
gog chat messages --space <space-id>
# メッセージ送信
gog chat send --space <space-id> --text "メッセージ内容"
# DM送信
gog chat dm --email colleague@company.com --text "Hi!"
```
## Core Services -- Productivity
### Drive
**ファイル操作:**
```bash
# ファイル一覧
gog drive list
gog drive list --query "name contains 'report'"
# ファイルダウンロード
gog drive download <file-id>
gog drive download <file-id> --output ./downloads/
# ファイルアップロード
gog drive upload report.pdf
gog drive upload report.pdf --folder <folder-id>
# Google Docs/Sheets/Slides のエクスポート
gog drive export <file-id> --mime application/pdf
gog drive export <file-id> --mime text/csv
```
**フォルダ管理:**
```bash
# フォルダ作成
gog drive folder create "Project Documents"
gog drive folder create "Subfolder" --parent <parent-folder-id>
# フォルダ内のファイル一覧
gog drive list --folder <folder-id>
```
**権限管理:**
```bash
# 権限一覧
gog drive permissions <file-id>
# 権限付与
gog drive share <file-id> --email user@example.com --role writer
gog drive share <file-id> --email user@example.com --role reader
# 共有ドライブ一覧
gog drive shared-drives
```
### Sheets
**データ読み取り:**
```bash
# シート全体の読み取り
gog sheets get <spreadsheet-id>
# 範囲指定(A1記法)
gog sheets get <spreadsheet-id> --range "Sheet1!A1:D10"
gog sheets get <spreadsheet-id> --range "Sheet1!A:A"
# JSON出力
gog sheets get <spreadsheet-id> --range "Sheet1!A1:D10" --json
```
**データ書き込み:**
```bash
# セル書き込み
gog sheets update <spreadsheet-id> --range "Sheet1!A1" --values "Hello,World"
# 行追加
gog sheets append <spreadsheet-id> --range "Sheet1!A1" --values "New,Row,Data"
```
**シート管理:**
```bash
# 新規スプレッドシート作成
gog sheets create --title "New Spreadsheet"
# シート一覧
gog sheets list <spreadsheet-id>
```
### Docs & Slides
Docs と Slides は主に Drive 経由のエクスポートで利用します:
```bash
# Google Docs → PDF
gog drive export <doc-id> --mime application/pdf
# Google Docs → DOCX
gog drive export <doc-id> --mime application/vnd.openxmlformats-officedocument.wordprocessingml.document
# Google Slides → PDF
gog drive export <slides-id> --mime application/pdf
# Google Slides → PPTX
gog drive export <slides-id> --mime application/vnd.openxmlformats-officedocument.presentationml.presentation
```
### Tasks
```bash
# タスクリスト一覧
gog tasks lists
# タスク一覧
gog tasks list <tasklist-id>
# タスク作成
gog tasks add <tasklist-id> --title "タスク名" --due 2025-02-15
# タスク完了
gog tasks done <tasklist-id> <task-id>
# タスク未完了に戻す
gog tasks undo <tasklist-id> <task-id>
# タスク削除
gog tasks delete <tasklist-id> <task-id>
# 完了済みタスクをクリア
gog tasks clear <tasklist-id>
```
## Core Services -- Workspace Admin
### Groups [Workspace Only]
```bash
# グループ一覧
gog groups list
# グループメンバー一覧
gog groups members <group-email>
```
### Classroom
```bash
# コース一覧
gog classroom courses
# コースの名簿(生徒一覧)
gog classroom roster <course-id>
# 課題(Coursework)一覧
gog classroom coursework <course-id>
# 提出物一覧
gog classroom submissions <course-id> <coursework-id>
# アナウンス
gog classroom announcements <course-id>
```
### People & Contacts
```bash
# 自分のプロフィール
gog people me
# Workspace ディレクトリ検索
gog people search "John Smith"
# 連絡先検索
gog contacts search "Jane"
# 連絡先作成
gog contacts create --name "Jane Doe" --email jane@example.com --phone "+1-555-0100"
# その他の連絡先(やり取り履歴から自動生成)
gog contacts other
```
## Output Formats & Global Flags
### Output Formats
```bash
# 人間可読形式(デフォルト)
gog gmail threads
# JSON出力(パイプライン統合に最適)
gog gmail threads --json
gog gmail threads --json | jq '.[] | .subject'
# プレーン出力(TSV形式)
gog gmail threads --plain
# 進捗メッセージは stderr に出力されるため、stdout をクリーンにパイプ可能
gog drive list --json 2>/dev/null | jq '.[] | .name'
```
### Global Flags
| フラグ | 説明 |
|-------|------|
| `--account <email\|alias\|auto>` | 使用するアカウントを選択 |
| `--client <name>` | OAuth クライアントを選択 |
| `--json` | JSON 出力 |
| `--plain` | TSV 出力 |
| `--color <auto\|always\|never>` | カラー出力制御 |
| `--force` | 確認プロンプトをスキップ |
| `--no-input` | プロンプト時にエラー終了(CI向け) |
| `--verbose` | 詳細ログ出力 |
| `--enable-commands <csv>` | 使用可能コマンドを制限(サンドボックス) |
### Environment Variables
| 変数 | 説明 |
|-----|------|
| `GOG_ACCOUNT` | デフォルトアカウント |
| `GOG_CLIENT` | デフォルトOAuthクライアント |
| `GOG_JSON` | デフォルトJSON出力(`1` or `true`) |
| `GOG_PLAIN` | デフォルトプレーン出力(`1` or `true`) |
| `GOG_COLOR` | カラーモード |
| `GOG_TIMEZONE` | タイムゾーン(IANA名, `UTC`, `local`) |
| `GOG_ENABLE_COMMANDS` | コマンド許可リスト |
| `GOG_KEYRING_BACKEND` | キーリングバックエンド |
| `GOG_KEYRING_PASSWORD` | 暗号化キーリングのパスワード |
## Configuration
### Config File
```bash
# 設定ファイルの場所を表示
gog config path
# macOS: ~/Library/Application Support/gogcli/config.json
# Linux: ~/.config/gogcli/config.json (XDG_CONFIG_HOME準拠)
# Windows: %AppData%\gogcli\config.json
# 設定一覧
gog config list
# 値の取得・設定
gog config get default_timezone
gog config set default_timezone "Asia/Tokyo"
gog config unset default_timezone
```
**config.json の例:**
```json5
{
keyring_backend: "auto",
default_timezone: "Asia/Tokyo",
account_aliases: {
work: "user@company.com",
personal: "user@gmail.com"
},
account_clients: {
"user@company.com": "work"
},
client_domains: {
"company.com": "work"
}
}
```
## Common Patterns
### 1. 日次メールダイジェスト
```bash
# 今日の未読メールをJSON取得 → jq でサマリ化
gog gmail threads --query "is:unread newer_than:1d" --json | \
jq -r '.[] | "\(.from) | \(.subject)"'
```
### 2. 今日のスケジュール確認
```bash
# 今日のイベント一覧
gog calendar events --today
# JSON出力で処理
gog calendar events --today --json | jq -r '.[] | "\(.start) - \(.summary)"'
```
### 3. チームの空き時間検索
```bash
# 複数メンバーの空き時間を確認
gog calendar freebusy \
--emails "alice@company.com,bob@company.com,carol@company.com" \
--from "2025-02-03T09:00:00" --to "2025-02-03T18:00:00"
```
### 4. ファイルの一括ダウンロード
```bash
# 特定フォルダ内のファイルIDを取得してダウンロード
gog drive list --folder <folder-id> --json | \
jq -r '.[].id' | \
xargs -I{} gog drive download {} --output ./downloads/
```
### 5. Sheets データのCSVエクスポート
```bash
# Sheets → プレーン出力(TSV)でリダイレクト
gog sheets get <spreadsheet-id> --range "Sheet1!A1:Z100" --plain > data.tsv
```
### 6. サンドボックス実行(エージェント用)
```bash
# calendar と tasks のみ許可
gog --enable-commands calendar,tasks calendar events --today
# 環境変数で制限
export GOG_ENABLE_COMMANDS=gmail,drive
gog gmail threads # OK
gog calendar events # ブロックされる
```
### 7. CI/CD パイプラインでの使用
```bash
# 非対話モード + 暗号化キーリング
export GOG_KEYRING_PASSWORD='secure-password'
export GOG_ACCOUNT=ci-bot@company.com
export GOG_JSON=1
# エラー時にプロンプトではなく即座に失敗
gog --no-input gmail send --to team@company.com \
--subject "Build Report" --body "Build #123 passed"
```
### 8. マルチアカウント切り替え
```bash
# エイリアス設定
gog auth alias set work work@company.com
gog auth alias set personal personal@gmail.com
# エイリアスで使い分け
gog --account work gmail threads
gog --account personal gmail threads
# 一時的な切り替え
GOG_ACCOUNT=work gog calendar events --today
```
## Security Best Practices
### Least Privilege Authentication
```bash
# 必要なサービスのみ認証
gog auth add user@gmail.com --services gmail,calendar
# 読み取り専用で十分な場合
gog auth add user@gmail.com --readonly
# Drive は file スコープで制限
gog auth add user@gmail.com --drive-scope file
```
### Command Sandboxing
エージェントや自動化スクリプトに gogcli を使わせる場合:
```bash
# 使用可能コマンドを制限
export GOG_ENABLE_COMMANDS=calendar,tasks
# 確認プロンプトをスキップしない(デフォルト)
# --force は明示的に必要な場合のみ使用
```
### Credential Management
- OS キーリング(`auto` or `keychain`)を推奨
- `file` バックエンドはパスワード保護必須
- CI 環境では `GOG_KEYRING_PASSWORD` を安全に管理(シークレットマネージャ等)
- クレデンシャル JSON は安全な場所に保管し、バージョン管理に含めない
- サービスアカウントキーは定期的にローテーション
### Multi-Account Security
- 本番環境と開発環境でアカウントを分離
- `--account` を明示指定して誤操作を防止
- 環境変数 `GOG_ACCOUNT` でデフォルトアカウントを明確に設定
## Troubleshooting
### Quick Reference
| 症状 | 原因 | 対策 |
|-----|------|------|
| `token has been expired or revoked` | リフレッシュトークン失効 | `gog auth add <email>` で再認証 |
| `insufficient permission` / 403 | スコープ不足 | `gog auth add <email> --services <svc> --force-consent` |
| コマンドがブロックされる | `--enable-commands` 制限 | 環境変数 `GOG_ENABLE_COMMANDS` を確認 |
| キーリングエラー | バックエンド問題 | `gog auth keyring auto` でリセット |
| タイムゾーンが違う | 未設定 | `gog config set default_timezone "Asia/Tokyo"` |
| サービスアカウントエラー | 委任未設定 | Workspace 管理コンソールでスコープを許可 |
詳細なトラブルシューティングは `references/troubleshooting.md` を参照。
## Resources
このスキルには以下のリファレンスが含まれます:
| ファイル | 内容 |
|---------|------|
| `references/quick_reference.md` | 全13サービスのコマンドチートシート |
| `references/communication_services.md` | Gmail/Calendar/Chat の詳細ガイド |
| `references/productivity_services.md` | Drive/Sheets/Docs/Slides/Tasks/Keep の詳細ガイド |
| `references/workspace_admin_services.md` | Groups/Classroom/People + サービスアカウント詳細 |
| `references/troubleshooting.md` | トラブルシューティング詳細ガイド |
**公式リポジトリ:** https://github.com/steipete/gogcli
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!