gws-cli について
gws-cli は、Google Workspace CLI を使って Workspace のサービスや API を操作するためのスキルです。エージェント向けに、スキーマ確認、認証状態の確認、構造化出力、安全に配慮した実行手順をまとめています。
主な機能
- 01スキーマに基づくコマンド確認
- 02API 呼び出し前の認証確認
- 03構造化 JSON 出力
- 04ページネーションとファイル転送
- 05書き込み操作の安全確認
活用シーン
- 01Google Drive のファイルの読み取りや更新
- 02Sheets や Calendar の API メソッド確認
- 03CI での再現可能な Workspace タスク実行
- 04dry-run によるリスクの高い変更の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ fabioeloi/ gws-cli-skill --skill gws-cliインストール後、Claude Code で/gws-cliを入力して読み込まれたか確認します。
同梱ファイルreferences/REFERENCE.mdscripts/check-prereqs.sh
詳細
gws-cli
手書きの HTTP リクエストや場当たり的な API ラッパーではなく、Google Workspace CLI を使ってタスクを実行する場合に、このスキルを使用します。
このスキルを使用する場面
- Google Drive、Gmail、Sheets、Docs、Slides、Calendar、Chat、Tasks、People、Meet、または Workspace Admin API との連携をユーザーから依頼された場合。
- エージェントが調べやすい、構造化された JSON 出力をユーザーが求めている場合。
- リクエストを作成する前に、Google API のスキーマを調べる必要がある場合。
- ローカル、CI、またはヘッドレス環境で実行できる、再現可能な CLI ワークフローをユーザーが求めている場合。
必須の運用モデル
gwsがインストールされ、PATHから利用できることを確認します。- API を呼び出す前に、認証状態を確認します。
- フラグを組み立てる前に、
gws schemaまたはgws <service> --helpで対象のメソッドを調べます。 - まず読み取り専用のコマンドを優先します。
- 書き込み、更新、削除の操作を実行する前に、ユーザーに意図を確認します。
- コマンドがローカルでの検証に対応しており、操作にリスクがある場合は、
--dry-runを優先します。
クイックスタート
# Install the CLI
npm install -g @googleworkspace/cli
# Check the binary and auth status
bash scripts/check-prereqs.sh
# Inspect command space
gws drive --help
gws schema drive.files.list
# Run a read-only command
gws drive files list --params '{"pageSize": 10}' --format json
認証ワークフロー
タスクを満たす中で最も簡易な認証フローを選択します。
ローカルでの対話型認証
gws auth setup
gws auth login
サービスアカウント
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
gws auth status
CI またはヘッドレス環境でのフロー
- エクスポートした認証情報、またはサービスアカウントに基づく実行を優先します。
- シークレットをユーザーにそのまま表示しないでください。
- 認証情報が不足している場合は、推測せずに停止し、適切な認証設定を依頼してください。
詳細は references/REFERENCE.md を参照してください。
コマンドの確認ワークフロー
実行前に必ず調べてください。
# Browse resources and helper commands for a service
gws sheets --help
# Inspect a specific method schema
gws schema sheets.spreadsheets.values.get
スキーマの出力を使って、次の項目を確認します。
- 必須の
--params値 --jsonを使ったリクエスト本文が必要かどうか- ページネーションまたはファイルアップロードのフラグが適用されるかどうか
- API が想定するフィールド名と型
コマンドのパターン
読み取り専用の一覧取得または取得
gws drive files list --params '{"pageSize": 10}' --format json
gws gmail users messages get --params '{"userId": "me", "id": "MESSAGE_ID"}' --format json
明示的な確認を伴う作成または更新
gws sheets spreadsheets create --json '{"properties": {"title": "Q1 Budget"}}' --format json
gws docs documents batchUpdate --params '{"documentId": "DOC_ID"}' --json '{"requests": [...]}' --format json
スキーマに基づくリクエストの作成
gws schema calendar.events.insert
gws calendar events insert --params '{"calendarId": "primary"}' --json '{"summary": "Standup", "start": {"dateTime": "2026-03-07T09:00:00Z"}, "end": {"dateTime": "2026-03-07T09:15:00Z"}}'
ページネーション
gws drive files list --params '{"pageSize": 100}' --page-all
ファイルのアップロードまたはダウンロード
gws drive files create --json '{"name": "report.pdf"}' --upload ./report.pdf
gws drive files get --params '{"fileId": "FILE_ID", "alt": "media"}' --output ./download.bin
安全に関するルール
create、insert、update、patch、deleteと、状態を変更するヘルパーコマンドは、書き込み操作として扱います。- 書き込み操作を実行する前に、対象のリソース、ID、スコープを確認します。
- トークン、OAuth クライアントシークレット、またはサービスアカウント JSON の内容を決して表示しないでください。
- ユーザーが人向けの表を明示的に希望している場合を除き、
--format jsonを優先します。 - 出力形式が NDJSON に変わるため、
--page-allは意図的に使用します。 - 上流 API または CLI のヘルプが曖昧な場合は、フラグ名を推測せず、スキーマを再度調べます。
利用可能なサポートファイル
- インストール、認証、一般的なコマンドのテンプレートについては references/REFERENCE.md を参照してください。
- ローカル環境の確認には
scripts/check-prereqs.shを使用します。
トラブルシューティング
gwsが見つからない場合は、npm または GitHub リリースからインストールし、PATHに含まれていることを確認してから、bash scripts/check-prereqs.shを再実行してください。gws auth statusで認証情報がないと表示された場合は、gws auth setupとgws auth loginを実行するか、サービスアカウントを使うフローではGOOGLE_APPLICATION_CREDENTIALSをエクスポートしてください。- OAuth クライアントの制限により
gws auth loginが失敗する場合は、適切であれば上流の手動 OAuth フロー、またはサービスアカウントを優先してください。 - リクエストが
403 Forbiddenまたは権限不足を返した場合は、再試行する前に、現在の ID、API の有効化状態、スコープ、リソースの共有設定を確認してください。 - メソッドが不明な場合は、REST メソッド名にそのまま対応すると推測せず、
gws <service> --helpでサービスのエイリアスを確認してください。 - リクエストがスキーマ検証に失敗した場合は、
gws schema <service.resource.method>を再実行し、必須フィールド名を、作成したコマンドと一つずつ照合してください。 --page-allによって予期せず出力形式が変わった場合は、ページネーション時の出力が NDJSON になることを思い出し、1 行ずつ解析してください。
コメント
Markdown 対応