Google Workspace CLIが登場したので試してみた
はじめに
こんにちは。
クラウド事業本部コンサルティング部の渡邉です。
本日朝Xを見ているとタイムラインでGoogle Workspace CLIがリリースされているとのポストを見ましたので、さっそく調査してみました。
Google Workspace CLI(gws)とは
Google Workspace CLI(以下、gws)は、Drive、Gmail、Calendar、Sheets、Docs、Chat、Admin等のGoogle Workspace APIをひとつのコマンドラインツールで操作できるCLIツールです。gwsコマンドで実行します。
従来はGoogle WorkspaceのAPIを利用する際に、毎回REST APIのドキュメントを確認し、curlコマンドを利用していた方もいると思います。
Drive、Gmail、Calendar、Sheets、Docs、Chatなどと、Google Workspaceには多くのサービスがありますが、それぞれのAPIを個別に呼び出すのは割と大変だったかと思います。
gwsの最大の特徴は、GoogleのDiscovery Serviceを利用して実行時に動的にコマンドを構築するという点です。
つまり、Google WorkspaceにAPIエンドポイントが追加された場合、gws自体をアップデートしなくても自動的に新しいAPIが利用可能になります。
主な機能
Githubリポジトリにはgwsコマンドを利用する上で、人間向けとAIエージェント向けに機能を提供していると記載がありました。
人間向けの機能
人間向けの機能としては、CLIを利用する上で、必須なタブ補完、ヘルプ機能はもちろんのこと、ドライラン機能が提供されています。
| 機能 | 説明 |
|---|---|
| タブ補完 | コマンド入力時にタブ補完が利用可能 |
--help |
すべてのリソースで--helpが利用可能 |
--dry-run |
リクエストを実行せずにプレビューが可能 |
| 自動ページネーション | 大量のデータを自動的にページ送りして取得 |
| マルチパートアップロード | Google Driveへのファイルのアップロードに対応 |
| 暗号化されたクレデンシャル管理 | OSキーリングを利用したAES-256-GCMによる暗号化保存 |
AIエージェント向けの機能
昨今、AIエージェントが話題ですが、AIエージェントに対する機能も提供されていました。
エージェントスキルがで提供されているのはかなりアツいと思います。
| 機能 | 説明 |
|---|---|
| 構造化JSON出力 | すべてのレスポンスがJSON形式で返却される |
| 100以上のエージェントスキル | 各APIに対応したAgent Skillを同梱 |
| 50以上のレシピ | Gmail、Drive、Docs、Calendar、Sheetsの厳選レシピ |
| MCPサーバー | Model Context Protocolに対応したサーバー機能 |
スキルとレシピに関しては、こちらから確認することができます。
インストール
npmでグローバルインストールすることができます。
npm install -g @googleworkspace/cli
ソースからビルドする場合はRustのcargoを利用します。
cargo install --path .
認証設定
gwsは複数の認証方法をサポートしています。用途に応じて最適な方法を選択するのが良いと思います。
インタラクティブセットアップ(ローカル開発向け)
こちらが最も簡単なセットアップ方法です。Google Cloudプロジェクトの作成、APIの有効化、OAuthログインまでを対話形式で案内してくれます。
gws auth setup # 初回セットアップ(プロジェクト作成・API有効化・ログイン)
gws auth login # 2回目以降のログイン
クレデンシャルはOSキーリングに保存された鍵を使ったAES-256-GCMで暗号化され、安全に保存されます。
手動OAuthセットアップ(Google Cloud Console)
gws auth setupで自動化できない場合や、明示的に制御したい場合に利用します。
- Google Cloud ConsoleでOAuth同意画面を設定(アプリタイプ:外部、テストユーザーに自分のアカウントを追加)
- OAuthクライアントを作成(タイプ:デスクトップアプリ)
- クライアントJSONをダウンロードし、
~/.config/gws/client_secret.jsonに保存 gws auth loginを実行
ヘッドレス / CI環境
ブラウザが利用できない環境では、事前にクレデンシャルをエクスポートして利用します。
# ブラウザが使えるマシンで認証後にエクスポート
gws auth export --unmasked > credentials.json
# ヘッドレスマシンで利用
export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
gws drive files list
サービスアカウント
サーバー間通信の場合はサービスアカウントの鍵ファイルを指定するだけでログイン不要です。
export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/service-account.json
gws drive files list
ドメイン全体の委任を利用する場合は、以下の環境変数も追加します。
export GOOGLE_WORKSPACE_CLI_IMPERSONATED_USER=admin@example.com
認証の優先順位
認証時の優先順位についてもGithubリポジトリに記載がありました。認識しておくとトラブルシューティング時に混乱しないと思います。
| 優先度 | 認証ソース | 設定方法 |
|---|---|---|
| 1 | アクセストークン | GOOGLE_WORKSPACE_CLI_TOKEN |
| 2 | クレデンシャルファイル | GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE |
| 3 | 暗号化クレデンシャル(OSキーリング) | gws auth login |
| 4 | プレーンテキストクレデンシャル | ~/.config/gws/credentials.json |
AIエージェントとの連携
gwsは、CLIツールとしてだけでなく、AIエージェントのツールとして利用できることが強みだと思います。
Agent Skills
リポジトリには100以上のAgent Skill(SKILL.mdファイル)が同梱されており、各Google Workspace APIに対応したスキルに加え、よくあるワークフロー向けのヘルパーや、Gmail・Drive・Docs・Calendar・Sheetsの50以上の厳選レシピがデフォルトで含まれています。
スキルのインストールは、すべてを一括で行うことも、個別に行うことも可能です。
# すべてのスキルを一括インストール
npx skills add github:googleworkspace/cli
# 必要なスキルだけを選択してインストール
npx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-drive
npx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail
MCPサーバー
gwsではMCPサーバーも用意されています。gws mcpコマンドでMCPサーバーを起動することができ、Claude Desktop、Gemini CLI、VS Code等のMCP対応クライアントからGoogle Workspace APIをツールとして呼び出すことができます。
# 特定のサービスのみ公開
gws mcp -s drive,gmail,calendar
# すべてのサービスを公開
gws mcp -s all
MCP対応クライアントの設定例は以下の通りです。
{
"mcpServers": {
"gws": {
"command": "gws",
"args": ["mcp", "-s", "drive,gmail,calendar"]
}
}
}
Gemini CLI Extension
Google Cloudユーザの方は、Gemini CLIを利用している方も多いと思います。Gemini CLIを利用している場合、拡張機能としてgwsを統合することもできます。
gws auth setup
gemini extensions install https://github.com/googleworkspace/cli
Model Armorによるレスポンスサニタイズ
AIエージェントがGoogle Workspace APIのレスポンスを処理する際、プロンプトインジェクション攻撃のリスクがあります。
Google Cloudには、Model Armorというプロンプト インジェクション、センシティブ データの漏洩、有害なコンテンツに対する包括的な保護を提供してくれるサービスがあり、gwsでは、Model Armorと連携して、APIレスポンスをエージェントに渡す前に入力をスキャンさせることができます。
gws gmail users messages get --params '...' \
--sanitize "projects/P/locations/L/templates/T"
| 環境変数 | 説明 |
|---|---|
GOOGLE_WORKSPACE_CLI_SANITIZE_TEMPLATE |
デフォルトのModel Armorテンプレート |
GOOGLE_WORKSPACE_CLI_SANITIZE_MODE |
warn(デフォルト)またはblock |
アーキテクチャ
gwsは2段階パース戦略を採用しているそうです。
argv[1]からサービス名を特定(例:drive)- そのサービスのDiscovery Document(24時間キャッシュ)を取得
- ドキュメントのリソースとメソッドから
clap::Commandツリーを構築 - 残りの引数を再パース
- 認証してHTTPリクエストを実行
すべての出力(成功、エラー、ダウンロードメタデータ)は構造化JSONで返却されます。
この設計により、Google側でAPIが追加・変更されてもgws自体の更新なしに対応できるのが大きなメリットです。
Google Workspace CLIを利用してみた
インストール
npmコマンドを利用してインストールしてみます。
npm install -g @googleworkspace/cli
私の場合は、0.3.2がインストールされました。
$ gws --version
gws 0.3.2
認証
認証方法として、インタラクティブセットアップを採用して実行してみたいと思います。
gws auth setup
を実行すると、以下の順番で対話的に認証設定が行われていきます。
- Step1 : gcloud CLI
- Step2 : Authentication
- Step3 : GCP Project
- Step4 : Workspace API
- Step5 : OAuth Credentials
Step1 : gcloud CLI
すでに私のローカル環境では、gcloud cliはインストール済みだったので、こちらはスキップされました。
gcloud cliが未インストールの方はこちらで案内されると思います。
Step2 : Authentication
Authenticationステップでは、Googleアカウントの選択が求められました。複数のGoogleアカウントを所有している方は、複数のGoogleアカウントが表示されるので、自身が使用しているGoogle WorkspaceドメインのGoogleアカウントを選択してください。

Step3 : GCP Project
GCP Projectステップでは、Google Cloud Projectを選択する必要があります。こちらも自身のGoogleアカウントでアクセス権限のあるプロジェクトの一覧が表示され、プロジェクトを1つ選択することが求められます。
こちらで選択したプロジェクトでGoogle Workspace APIの有効化設定や、OAuth関連の設定を行っていきます。

Step4 : Workspace API
Workspace APIステップでは、Step3で選択したGoogle Cloud Project内で、どのGoogle WorkspaceサービスのAPIを有効化するのか選択します。
有効化したGoogle Workspace APIのサービスのみ、Google Workspace CLIで利用することができます。
私はGoogle Calendar APIをすでに有効化していますが、今回はGoogle Drive、Google Sheets、Google Docs、Google Slidesを有効化してみます。

現状以下の、Google Workspace APIが利用可能でした。
| API名 | エンドポイント | ステータス |
|---|---|---|
| Google Drive | drive.googleapis.com | - |
| Google Sheets | sheets.googleapis.com | - |
| Gmail | gmail.googleapis.com | - |
| Google Calendar | calendar-json.googleapis.com | already enabled |
| Google Docs | docs.googleapis.com | - |
| Google Slides | slides.googleapis.com | - |
| Google Tasks | tasks.googleapis.com | - |
| People (Contacts) | people.googleapis.com | - |
| Google Chat | chat.googleapis.com | - |
| Google Vault | vault.googleapis.com | - |
| Groups Settings | groupssettings.googleapis.com | - |
| Reseller | reseller.googleapis.com | - |
| Licensing | licensing.googleapis.com | - |
| Apps Script | script.googleapis.com | - |
| Admin SDK | admin.googleapis.com | - |
| Classroom | classroom.googleapis.com | - |
| Cloud Identity | cloudidentity.googleapis.com | - |
| Alert Center | alertcenter.googleapis.com | - |
| Google Forms | forms.googleapis.com | - |
| Google Keep | keep.googleapis.com | - |
| Google Meet | meet.googleapis.com | - |
| Cloud Pub/Sub | pubsub.googleapis.com | - |
Step5 : OAuth Credentials
OAuth Credentialsステップでは、OAuth同意画面と、OAuthクライアントのセットアップを行っていきます。

ターミナル上に案内が表示されるので、案内に従って設定してください。ここからGoogle Cloudでの操作が必要になります。
OAuth同意画面の設定は外部、テスト中に設定します。

また、テストユーザには、自身のGoogleアカウントで使用しているメールアドレスを設定してください。

次に、OAuthクライアントを作成していきます。
- 【Google Auth Platform】-> 【クライアント】を選択
- 【クライアントを作成】をクリック

OAuthクライアントIDの作成画面で以下を入力して作成をクリックします。
- アプリケーションの種類:デスクトップアプリ
- 名前:Google Workspace CLI

OAuthクライアントが作成されるので、以下をメモしておきます。
- クライアントID
- クライアントシークレット

メモしたクライアントIDとクライアントシークレットをターミナル上に入力したらセットアップとしては完了です。
セットアップ完了後は以下の情報が出力されます。
$ gws auth setup
{
"account": "****@****.jp",
"apis_enabled": 0,
"apis_failed": 0,
"apis_skipped": 5,
"client_config": "/home/****/.config/gws/client_secret.json",
"message": "Setup complete! Run `gws auth login` to authenticate.",
"project": "****",
"status": "success"
}
✅ Setup complete! Run `gws auth login` to authenticate.
セットアップが完了したので、gws auth loginコマンドでログインしていきます。
gws auth login
コマンド実行後、ターミナル上に認証URLが表示されるので、アクセスして、アカウントの認証、OAuthの認証を行います。
OAuth Scopeの設定をここで行います。

認証完了後は、以下のような出力が得られます。
{
"credentials_file": "/home/****/.config/gws/credentials.enc",
"encryption": "AES-256-GCM (key secured by OS Keyring or local `.encryption_key`)",
"message": "Authentication successful. Encrypted credentials saved.",
"scopes": [
"https://www.googleapis.com/auth/drive.meet.readonly",
"https://www.googleapis.com/auth/drive.metadata.readonly",
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/drive.apps.readonly",
"https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/drive.appdata",
"https://www.googleapis.com/auth/drive.file",
"https://www.googleapis.com/auth/presentations",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/cloud-platform"
],
"status": "success"
}
これで、認証フェーズは完了です。
実際にCLIを実行してみる
それでは、実際にGoogle Workspace CLIを試してみたいと思います。
Google Drive
Google Drive内のファイルのリストをGoogle Workspace CLIで取得してみました。
$ gws drive files list --params '{"pageSize": 3}'
{
"files": [
{
"id": "****",
"kind": "drive#file",
"mimeType": "application/vnd.google-apps.spreadsheet",
"name": "****"
},
{
"id": "****",
"kind": "drive#file",
"mimeType": "application/vnd.google-apps.spreadsheet",
"name": "****"
},
{
"id": "****",
"kind": "drive#file",
"mimeType": "application/vnd.google-apps.spreadsheet",
"name": "****"
}
],
"incompleteSearch": false,
"kind": "drive#fileList",
"nextPageToken": "****"
}
CLI操作でGoogle Driveのファイルのリストが表示できました。
Googleカレンダー
今度は、自身のGoogleカレンダーの情報を取得してみたいと思います。
$ gws calendar +agenda --today
calendar end location start summary
────────── ───────────────────────── ────────────────────────────────────── ───────────────────────── ────────────────────────────────────
****@****.jp 2026-03-06 2026-03-05 ****
****@****.jp 2026-03-06 2026-03-05 ****
****@****.jp 2026-03-05T11:00:00+09:00 2026-03-05T08:00:00+09:00 ****
****@****.jp 2026-03-05T12:30:00+09:00 **** 2026-03-05T09:00:00+09:00 ****
****@****.jp 2026-03-05T12:00:00+09:00 2026-03-05T11:00:00+09:00 ****
****@****.jp 2026-03-05T13:00:00+09:00 2026-03-05T12:00:00+09:00 ****
****@****.jp 2026-03-05T14:30:00+09:00 2026-03-05T13:00:00+09:00 ****
****@****.jp 2026-03-05T15:00:00+09:00 2026-03-05T14:30:00+09:00 ****
****@****.jp 2026-03-05T16:00:00+09:00 2026-03-05T15:00:00+09:00 ****
****@****.jp 2026-03-05T16:50:00+09:00 **** 2026-03-05T16:00:00+09:00 ****
****@****.jp 2026-03-05T21:00:00+09:00 2026-03-05T18:00:00+09:00 ****
****@****.jp 2026-03-07 2026-03-06 ****
****@****.jp 2026-03-06T07:30:00+09:00 2026-03-06T07:30:00+09:00 ****
****@****.jp 2026-03-06T10:00:00+09:00 **** 2026-03-06T09:00:00+09:00 ****
取得することができました。(一部明日の予定も混ざっちゃっていますが...)
gws calendar +agenda --week --format tableで週次のカレンダー情報を取得することも可能です。
最後に
今回は、本日リリースされたGoogle Workspace CLI(gws)について紹介と簡単なCLI操作を実行しました。
個人的に特に魅力的だと感じたのは以下の点です。
- Discovery Serviceを利用した動的なコマンド構築により、CLI自体のアップデートなしに新しいAPIへ対応できる点
- SkillsやMCPサーバー機能により、Claude DesktopやGemini CLI等のAIエージェントからGoogle Workspaceを直接操作できる点
- Model Armorとの連携により、AIエージェント利用時のセキュリティリスクにも配慮されている点
まだv1.0に向けて開発中ではありますが、Google Workspaceを日常的に利用しているエンジニアやAIエージェントの活用を検討している方にとって、非常に注目すべきツールだと思います。
一方、Google Workspace CLIの認証準備に、Google Cloudの操作も一部含まれてくるので、Google Workspaceの作業をCLIで自動化したいけど、Google Cloudは利用していないユーザの方には導入のハードルになるのかなと感じました。
今回は、簡単なCLI操作だけでしたが、Claude CodeなどのAIエージェントからSkillsを利用してGoogle Workspace CLIを操作することでGoogle Workspaceで自動化できる幅がかなり広がると思うので、Claude CodeとGoogle Workspace CLIのSkillsを検証してみた記事も出していきたいと思います。
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部コンサルティング部の渡邉でした!






