以下の内容はhttps://blog.g-gen.co.jp/entry/using-google-workspace-cli-via-gemini-cliより取得しました。


Google Workspace CLIとGemini CLIを使い自然言語でGoogle Workspaceを管理する

記事タイトルとURLをコピーする

G-gen の三浦です。当記事では、Google Workspace CLI と、Google が提供する生成 AI CLI ツールである Gemini CLI を組み合わせて、Google Workspace の管理操作を自然言語で行いました。

概要

Gemini CLI とは

Gemini CLI とは、ターミナルから直接 Gemini の機能を利用できる、オープンソースの生成 AI コマンドラインインターフェイスです。詳細は以下の記事をご参照ください。

blog.g-gen.co.jp

Google Workspace CLI とは

Google Workspace CLI は、Google Workspace の各種 API をターミナルから操作できるコマンドラインツールです。操作結果を JSON で取得できるため、一覧取得や絞り込み、簡易的な集計にも利用できます。

当ツールは Google の公式サポート対象製品ではありません。Google の従業員によって開発されたツールではありますが、公式製品ではなく、技術サポートやその他のサポートは提供されません。また、当ツールは Apache-2.0 ライセンスのもとに公開されているオープンソースツールであり、無償で利用できます。また当記事を執筆した2026年3月6日現在では v0.3.3 であり、v1.0 に向けて破壊的変更が入る可能性もあることに留意して下さい。

当ツールには AI エージェント向けの skills が豊富に用意されており、Gemini CLI などから自然言語の指示で gws コマンドを実行して Google Workspace を操作できるのが特徴です。

当記事で検証した Google Workspace の管理操作は以下のとおりです。

対象 検証内容
Admin SDK Google Workspace のユーザー一覧の取得、最終ログイン日時の集計、所属グループの確認
Google カレンダー 今日の予定一覧の取得、来週の空き時間の抽出
Google ドライブ マイドライブのファイル一覧取得、更新日時による絞り込み
Gmail 受信トレイの一覧取得、未読メールの絞り込み

なお Google Workspace CLI の利用には、Google Cloud プロジェクト上での API 有効化や OAuth クライアントの作成が必要です。今回は検証用に専用の Google Cloud プロジェクトを用意し、その環境で動作確認します。

検証の流れ

検証手順は以下のとおりです。

項番 内容 説明
1 Google Workspace CLI のセットアップ Google Cloud プロジェクトの選択、API の有効化、OAuth クライアントの設定を行います。
2 Google Workspace CLI のログイン Google アカウントで認証します。
3 Gemini CLI の設定 Gemini CLI の拡張機能として Google Workspace CLI を導入します。
4 Gemini CLI からの操作検証 Gemini CLI から自然言語で Google Workspace の操作を依頼し、動作を確認します。

Google Workspace CLI のセットアップ

インストールと初期設定

以下のコマンドで Google アカウントにログインします。gcloud コマンドが使えない場合、公式ドキュメントの手順に沿ってインストールします。

gcloud auth login

Google Workspace CLI のセットアップ時に API を有効化するため、事前に Cloud Resource Manager API を有効化しておきます。

# 環境変数を設定
PROJECT_ID="your-project-id" # Google Cloud プロジェクト ID を設定
 
gcloud services enable cloudresourcemanager.googleapis.com --project=$PROJECT_ID

以下のコマンドで Google Workspace CLI をインストールします。

npm install -g @googleworkspace/cli

以下のコマンドで Google Workspace CLI のセットアップを実施します。

gws auth setup

セットアップは 5 つのステップで構成されています。Step 1(gcloud CLI の確認)は自動で完了します。

Google アカウントを選択し、Enter キーを押します。

┌ gws auth setup ─────────────────────────────────────────────────┐
│  ✓ Step 1/5: gcloud CLI — found                                │
│  ▸ Step 2/5: Authentication                                    │
│  ○ Step 3/5: GCP project                                       │
│  ○ Step 4/5: Workspace APIs                                    │
│  ○ Step 5/5: OAuth credentials                                 │
└─────────────────────────────────────────────────────────────────┘
┌Select a Google account──────────────────────────────────────────┐
│  ○ ➕ Login with new account                                    │
│▸ ◉ miura@dev.g-gen.co.jp                                       │
│  ○ xxxxxx@example.com                                           │
└─────────────────────────────────────────────────────────────────┘

Google Cloud プロジェクトを選択します。先ほど API を有効化したプロジェクトを選択します。

┌Select a GCP project─────────────────────────────────────────────┐
│  ○ ➕ Create new project                                        │
│▸ ◉ your-project-id                                              │
│  ○ project-aaa                                                  │
└─────────────────────────────────────────────────────────────────┘

続いて、使用する API を有効化します。選択した API が Google Cloud プロジェクト上で有効化されます。今回は以下の 4 つを選択します。

API 用途
Admin SDK API ユーザー・グループの管理
Google Calendar API カレンダーの予定管理
Google Drive API ドライブのファイル操作
Gmail API メールの送受信・管理
# ◉ が選択済み(今回は Drive / Gmail / Calendar / Admin SDK を選択)
┌Select APIs to enable  4/22 selected─────────────────────────────┐
│  ◉ Google Drive  drive.googleapis.com                           │ # 選択
│  ○ Google Sheets  sheets.googleapis.com                         │
│  ◉ Gmail  gmail.googleapis.com                                  │ # 選択
│  ◉ Google Calendar  calendar-json.googleapis.com                │ # 選択
│  ○ 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                         │
└─────────────────────────────────────────────────────────────────┘

OAuth クライアント ID の作成と入力を行います。ターミナルに表示される Step A(OAuth 同意画面の設定)と Step B(OAuth クライアント ID の作成)の手順を実施します。

┌ gws auth setup ─────────────────────────────────────────────────┐
│  ✓ Step 1/5: gcloud CLI — found                                │
│  ✓ Step 2/5: Authentication — miura@dev.g-gen.co.jp            │
│  ✓ Step 3/5: GCP project — your-project-id                     │
│  ✓ Step 4/5: Workspace APIs — 4 enabled, 0 skipped             │
│  ▸ Step 5/5: OAuth credentials — Waiting for manual input...   │
│                                                                 │
│  Manual OAuth client setup required.                            │
│                                                                 │
│  Step A — Consent screen (if not configured):                   │
│  https://console.cloud.google.com/apis/credentials/consent      │
│  → User Type: External, then save through all screens.          │
│                                                                 │
│  Step B — Create an OAuth client:                               │
│  https://console.cloud.google.com/apis/credentials              │
│  → 'Create Credentials''OAuth client ID'                    │
│  → Application type: Desktop app                                │
└─────────────────────────────────────────────────────────────────┘
┌Enter OAuth Client ID────────────────────────────────────────────┐
│>                                                                │
└─────────────────────────────────────────────────────────────────┘

OAuth 同意設定(Step A)

Step A で表示されている URL へアクセスし、[開始] を選択します。

開始を選択

以下の情報を入力し、[次へ] を選択します。

  • アプリ名:任意のアプリ名
  • ユーザーサポートメール:管理者のメールアドレスを指定

アプリ情報を入力

先の Step A で User Type: External と指定があったため、[外部] を選択し、[次へ] を選択します。

対象を設定

任意のメールアドレスを入力し、[次へ] を選択します。

連絡先情報を設定

ポリシーを確認の上で、[同意します] を選択し、[続行] > [作成] を選択します。

ポリシーの確認

[対象] へ移動し、テストユーザーの [+Add users] を選択し、セットアップ時に指定した自身の Google アカウントを選択し [保存] を選択します。

テストユーザーの追加
追加確認

OAuth アプリの公開ステータスがテスト中のため、テストユーザーにアカウントを追加することでアクセスが可能になります。

公開ステータスの確認

OAuth クライアント作成(Step B)

次に Step B の URL へアクセスし、 [認証情報を作成] > [OAuth クライアント ID] を選択します。

OAuth クライアント ID を選択

Step B の指定(Application type: Desktop app)に従い、[デスクトップ アプリ] を選択します。

デスクトップアプリを選択

任意の名前を入力し、[作成] を選択します。

OAuth クライアント ID の作成

OAuth クライアント ID とクライアントシークレットが表示されるので、控えておきます。

クライアント ID とシークレットの確認

セットアップ完了

ターミナルへ戻り、クライアント ID とシークレットを入力して Enter を押します。

┌Enter OAuth Client ID────────────────────────────────────────────┐
│> XXXXX.apps.googleusercontent.com                               │
└─────────────────────────────────────────────────────────────────┘
┌Enter OAuth Client Secret────────────────────────────────────────┐
│> GOCSPX-XXXXX                                                   │
└─────────────────────────────────────────────────────────────────┘

以下のように表示されれば、セットアップは完了です。

$ gws auth setup
{
  "account": "miura@dev.g-gen.co.jp",
  "apis_enabled": 4,
  "apis_failed": 0,
  "apis_skipped": 0,
  "client_config": "~/.config/gws/client_secret.json",
  "message": "Setup complete! Run `gws auth login` to authenticate.",
  "project": "XXXXX",
  "status": "success"
}
 
✅ Setup complete! Run `gws auth login` to authenticate.
$

CLI の認証

以下のコマンドで認証を実施します。

gws auth login

scope(アプリがアクセスできるデータの範囲)の設定画面が表示されるので、今回は以下の 5 つを選択し、Enter を押します。

scope 用途
admin.directory.group.readonly グループ情報の参照
admin.directory.user.readonly ユーザー情報の参照
calendar.readonly カレンダーの予定参照
drive.readonly ドライブのファイル参照
gmail.readonly メールの参照
# [x] が選択済み(今回は Admin SDK(user / group)/ Calendar / Drive / Gmail の readonly を選択)
Select OAuth scopes  5/72 selected
 
─────────────────────────────────────────────────────────────────────────────────────────────────
  [ ] ✨ Recommended (All Non-Restricted + Readonly)
  [ ] 🔒 Read Only
  [ ] ⚠️  Full Access (All Scopes)
~省略~
  [x] drive.readonly  ⛔ RESTRICTED                                          # 選択
~省略~
  [x] gmail.readonly  ⛔ RESTRICTED                                          # 選択
~省略~
  [x] admin.directory.group.readonly                                         # 選択
~省略~
  [x] admin.directory.user.readonly                                          # 選択
~省略~
  [x] calendar.readonly                                                      # 選択
~省略~
─────────────────────────────────────────────────────────────────────────────────────────────────
 ↑↓ Navigate   Space Toggle   a All   Enter Confirm   Esc Cancel
 

OAuth アプリの公開ステータスがテスト中の場合、指定できるスコープに上限があります。デフォルトの Recommended は多数のスコープを含むため、明示的に利用するスコープを選択する必要があります。

ブラウザが開き認証画面が表示されるため、アカウントを選択します。

アカウントを選択

OAuth アプリから前手順で選択したスコープに対する権限付与の許可画面が表示されるため、内容を確認して [許可] を選択します。

権限許可の設定

You may now close this window. とブラウザに表示されるため、コンソールへ戻り、以下内容が出力されていることを確認します。

{
  "credentials_file": "~/.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.readonly",
    "https://www.googleapis.com/auth/gmail.readonly",
    "https://www.googleapis.com/auth/admin.directory.group.readonly",
    "https://www.googleapis.com/auth/admin.directory.user.readonly",
    "https://www.googleapis.com/auth/calendar.readonly",
    "https://www.googleapis.com/auth/cloud-platform"
  ],
  "status": "success"
}

cloud-platform スコープは gws auth login の実行時に自動で追加されます。

Gemini CLI の設定

以下のコマンドで Gemini CLI の Extension(拡張機能)として、Google Workspace CLI をインストールします。

gemini extensions install https://github.com/googleworkspace/cli

以下の警告が表示された場合、Y を入力して Enter を押します。

The extension you are about to install may have been created by a third-party developer and sourced from a public repository. Google does not vet, endorse, or guarantee the functionality or security of extensions. Please carefully inspect any extension and its source code before installing to understand the permissions it requires and the actions it may perform.
 
Agent skills inject specialized instructions and domain-specific knowledge into the agent's system prompt. This can change how the agent interprets your requests and interacts with your environment. Review the skill definitions at the location(s) provided below to ensure they meet your security standards.
Do you want to continue? [Y/n]:Y

この警告は、サードパーティ製の拡張機能がエージェントのシステムプロンプトに指示を追加し、動作に影響を与える可能性があることを示しています。インストール前にソースコードや権限を確認することが推奨されています。

以下のコマンドで google-workspace-cli が拡張機能として登録されていることを確認します。

gemini extensions list 2>&1 | grep -n "google-workspace-cli"
 
# 出力例
25:✓ google-workspace-cli (latest)
28: Path: ~/.gemini/extensions/google-workspace-cli
34:  ~/.gemini/extensions/google-workspace-cli/CONTEXT.md

動作検証

ユーザーおよびグループのリストアップ

Gemini CLI を起動し、以下プロンプトを入力します。

Google Workspace のユーザーを一覧で確認したい

以下のように gws コマンドの実行許可が出ることを確認し、許可します。

> Google Workspace のユーザーを一覧で確認したい
 
Action Required
Shell: gws admin users list ...(省略)
Allow execution of: 'gws'?
  1. Allow once
  2. Allow for this session
  3. No, suggest changes (esc)
 

ユーザーが 10 件表示されることを確認します。

# 出力例(各種値はマスク)
 
✦ Google Workspace のユーザー一覧(最初の 10 件)を取得しました。
 
  ┌───────────────────────┬──────────────────┬───────────────────────────────────┐
  │ ID                    │ 氏名             │ プライマリメールアドレス          │
  ├───────────────────────┼──────────────────┼───────────────────────────────────┤
  │ 1070***********6529   │ g*** s*******    │ 13****.***@***************.**     │
  │ 1161***********2967   │ や********       │ a*************@***************.** │
  │ 1015***********9379   │ あ*******        │ a******@***************.**        │
  │ 1161***********5713   │ こ********       │ a*********@***************.**     │
  │ 1031***********8256   │ し******         │ b**@***************.**            │
  │ 1158***********3809   │ t*** C*****      │ c*****@***************.**         │
  │ 1089***********0291   │ み********       │ c***************@***************.** │
  │ 1071***********2585   │ t*** C**         │ c*******.****@***************.**  │
  │ 1159***********7349   │ で********       │ d*******@***************.**       │
  │ 1168***********3985   │ t*** s*****      │ d****************@***************.** │
  └───────────────────────┴──────────────────┴───────────────────────────────────┘
 
  さらに多くのユーザーを確認したい場合や、特定の条件で絞り込みたい場合はお知らせください。
 

次に以下プロンプトで、最終ログイン日時をもとに集計します。

最終ログインが1週間前のユーザーが何名いるか知りたい

Gemini CLI は gws admin users list を実行してユーザーの lastLoginTime を取得し、その結果をもとに最終ログイン日時を集計しました。

# 出力例
 
✦ 全ユーザー 100 名を調査した結果、以下のようになりました。
 
* 最終ログインが 1 週間以上前のユーザー:71 名
* まだ一度もログインしていないユーザー:9 名
* 過去 1 週間以内にログインしたユーザー:20

次に、ユーザーが所属している Google グループを確認します。

miura@dev.g-gen.co.jp が所属している Google グループを知りたい

Gemini CLI は最初に gws admin groups list を実行しましたが、fields の指定方法が誤っていたため一度エラーになりました。その後、fields--params 内へ移して再実行し、正常に結果を取得できました。

# 出力例(メールアドレスはマスク)
 
✦ miura@dev.g-gen.co.jp が所属している Google グループは以下の通りです。
 
  ┌─────────────────────────────────────┬─────────────────────────┐
  │ メールアドレス                      │ グループ名              │
  ├─────────────────────────────────────┼─────────────────────────┤
  │ m*******************@************** │ m*********************   │
  │ m***************@**************     │ a**                     │
  │ t***@**************                 │ t***                    │
  └─────────────────────────────────────┴─────────────────────────┘

予定のリストアップ(Google カレンダー)

以下プロンプトを入力し、今日の予定を一覧で確認します。

今日の予定を一覧で確認したい。開始時刻、タイトル、参加者の有無だけ出して

本日の予定が一覧表示されることを確認します。

# 出力例
 
✦ 本日の予定は以下の通りです。
 
  ┌──────────┬──────────┬────────────────────┐
  │ 開始時刻 │ タイトル │ 参加者             │
  ├──────────┼──────────┼────────────────────┤
  │ 08:00    │ 会議     │ あり (自分含め2) │
  └──────────┴──────────┴────────────────────┘
 
  他に確認したい時間帯や、特定の予定の詳細が必要であればお知らせください。
 

次に、来週の平日 13:00〜18:00 の空き時間を確認します。

来週の平日、13:00〜18:00 の間で予定が入っていない時間帯を日ごとに教えて

来週の空き時間が日別に出力されることを確認します。

# 出力例
 
✦ 来週の平日(2026/03/0903/13)、13:00〜18:00 の空き時間は以下の通りです。
 
 
   * 3/9 (): 13:00 〜 18:00(終日空いています)
   * 3/10 (): 空き時間なし
   * 3/11 (): 13:00 〜 18:00(終日空いています)
   * 3/12 (): 13:00 〜 18:00(終日空いています)
   * 3/13 (): 13:00 〜 14:00、15:00 〜 18:00
 
 
  予定の調整やミーティングの作成など、他にお手伝いできることはありますか?
 

ファイルのリストアップ(Google ドライブ)

以下プロンプトを入力し、マイドライブのファイルを新しい順に 10 件取得します。

マイドライブのファイルを新しい順に 10 件だけ確認したい。ファイル名、種類、更新日時を出して

Gemini CLI は gws drive files list を実行します。なお、fields--fields ではなく --params 内に指定する必要があり、最初の実行でエラーになった後、Gemini CLI が自動で修正し再実行しました。

# 出力例(ファイル名はマスク)
 
┌───────────────┬─────────────────────────┬─────────────────────┐
│ ファイル名     │ 種類 (MIMEタイプ)       │ 更新日時 (UTC)      │
├───────────────┼─────────────────────────┼─────────────────────┤
│ ****           │ Google ドキュメント     │ 2025-07-16 04:52:29 │
│ ****           │ Google スライド         │ 2025-07-14 15:52:29 │
│ ****           │ Google スプレッドシート │ 2025-07-14 15:50:37 │
│ ****           │ PDF                     │ 2025-07-13 13:29:10 │
│ ****           │ テキストファイル        │ 2025-03-10 07:40:26 │
│ ****           │ フォルダ                │ 2025-03-10 07:40:24 │
│ …              │ …                       │ …                   │
└───────────────┴─────────────────────────┴─────────────────────┘
 

次に、直近 7 日以内に更新されたファイルに絞り込みます。

直近 7 日以内に更新された Google Drive のファイルだけを一覧で確認したい。ファイル名と更新日時を出して

確認した結果、該当ファイルが存在しない場合はその旨が表示されることを確認します。

✦ 直近 7 日以内(2026227日以降)に更新された Google Drive のファイルは見つかりませんでした。
 
 
  参考までに、先ほど確認したマイドライブの最新ファイルは 20257月に更新された「****」でした。より長い期間(例:直近 1 ヶ月や 1 年)で確認したい場合は、その旨お知らせください。

メールのリストアップ(Gmail)

以下プロンプトを入力し、受信トレイの最新メールを 10 件取得します。

受信トレイのメールを新しい順に 10 件だけ確認したい。差出人、件名、受信日時を出して

Gemini CLI は gws gmail users messages list / get を用いてメール一覧を取得し、表形式に整形して表示します(差出人・件名は記事掲載用にマスクしています)。

# 出力例(差出人・件名はマスク)
 
┌───────────────┬───────────────┬────────────────────┐
│ 差出人         │ 件名           │ 受信日時 (JST換算) │
├───────────────┼───────────────┼────────────────────┤
│ ********       │ ********       │ 2026/03/04 10:50   │
│ ********       │ ********       │ 2026/03/03 17:40   │
│ ********       │ ********       │ 2026/03/03 02:01   │
│ …              │ …              │ …                  │
└───────────────┴───────────────┴────────────────────┘
 

次に、未読メールに絞り込んで最新 10 件を取得します。

未読メールを新しい順に 10 件だけ確認したい。差出人、件名、受信日時を出して

# 出力例(差出人・件名はマスク)
 
✦ 未読メールの最新 10 件は以下の通りです。
 
┌───────────────┬───────────────┬────────────────────┐
│ 差出人         │ 件名           │ 受信日時 (JST換算) │
├───────────────┼───────────────┼────────────────────┤
│ ********       │ ********       │ 2026/03/04 10:50   │
│ ********       │ ********       │ 2026/03/03 17:40   │
│ …              │ …              │ …                  │
└───────────────┴───────────────┴────────────────────┘

三浦 健斗 (記事一覧)

クラウドソリューション部

2023年10月よりG-genにジョイン。元オンプレ中心のネットワークエンジニア。 ネットワーク・セキュリティ・唐揚げ・辛いものが好き。

Google Cloud Partner All Certification Holders 2025 / Google Cloud Partner Top Engineer 2026




以上の内容はhttps://blog.g-gen.co.jp/entry/using-google-workspace-cli-via-gemini-cliより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14