Back to skills
SKILL.md
Gogcli Expert
ASecuritygogcli(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.
- 4 stars
- 0 votes
- 0 copies
- 1 view
- Added September 12, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add aibot88/sec_skill_store --skill gogcli-expert --agent claude-codeAre you the author of Gogcli Expert?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-gogcli-expert)---
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
Files in this skill
- SKILL.md
- source.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.