はじめに
先日Google WorkspaceをCLIから操作できるツール、その名も「Google Workspace CLI」(以下、gws)が誕生したとのことで早速使ってみることにしました。
軽い気持ちで始めましたが、中々大変でした・・・。
なお、gwsとは一体なんなのかは、以下の記事が個人的にとてもわかりやすかったです。Google Workspace CLIが登場したので試してみた
AIエージェント向けにも作られているとのことなので、最近仕事でも利用するようになったClaude CodeやAntigravityなどがパワーアップできるかも?と興味が沸きました。あくまでも趣味の範囲です。
※なお、Google Workspace CLI は This is not an officially supported Google product と明記されているツールです。
最終的なゴール:自律型プロジェクト・キックオフ
人間が「プロジェクト始めるよ」と一言指示するだけで、AIエージェントが gws コマンドを駆使して、以下の作業を実行できるようにします。(AIエージェントはAntigravityを使う予定)
AIエージェント経由でgwsにやらせる「3つの仕事」
- Driveに専用フォルダを作る: 「2026_AI導入プロジェクト」のような箱を用意し、工程単位のフォルダを作る。
- 諸々の管理用シートを作る: そのフォルダ内に、WBSなど管理用のスプレッドシートを生成する。
- カレンダーを予約する: キックオフミーティングの予定を勝手に入れる。
今回のゴール
- gwsコマンドをMacのターミナルから使えるようにする。
- Google Workspace CLIのセットアップを実施する。
- Google Driveのファイル一覧をgwsで取得する。
前提条件
- 端末はMac M1チップのMacbook Air
- アカウントは個人で契約しているStandardプランのGoogle Workspace
- Node.js未導入の場合は、公式ダウンロードページから LTS 版をインストールするか、
fnmやvoltaなどのバージョン管理ツールを使用してください。Node.js 18+が必須です。 - 今回インストールするのはこちら→公式GitHubリポジトリ
それでは早速始めていきましょう。
gwsをMacのターミナルからインストールする
Google Workspace CLI のインストール
ターミナルで以下のコマンドを実行します。
# グローバルインストール
npm install -g @googleworkspace/cli
# インストール確認(バージョンが表示されればOK)
gws --versionバージョンが表示された。いい感じです。
gws 0.7.0
This is not an officially supported Google product.Google Workspace CLIのセットアップを実施する
セットアップしていきます。(ここからが試練の道でした)
# ウィザード形式のセットアップ(プロジェクト作成・API有効化・OAuthログイン)
gws auth setupむ、、、いきなりエラーが返ってきた。gcloud CLIを入れないといけないのか。
{
"error": {
"code": 400,
"message": "gcloud CLI not found. Install it from https://cloud.google.com/sdk/docs/install",
"reason": "validationError"
}
}Geminiによると、gwsとgcloudの関係性は、「巨大な土台(gcloud)を使い回して、特定の作業に特化した道具(gws)を動かしている」という状態とのことです。 なぜこのような構造になっているのか、主な理由を3つ、Geminiからの引用です。
1. 「ログイン(認証)」を任せているから
Googleのサービスに安全にログインする仕組みを作るのは非常に複雑です。そのため、gws は自前でログイン機能を作らず、Google公式のマスターツールである gcloud が持っている「ログイン状態(認証情報)」を相乗りして利用 しているそうです。
2. 役割を分担しているから(モジュール化)
すべての機能を一つのソフトに詰め込むと、重くなり管理も大変になります。
- gcloud CLI: 通信や認証などの「土台」担当
- gws: Google Workspace操作などの「専門作業」担当 このように、「土台」の上に「専門道具」を載せて動かす 効率的な設計になっているためです。
3. アップデートを楽にするため
Googleの仕様が変わった際、土台(gcloud)側だけを更新すれば、それを参照しているツール(gwsなど)も自動的に最新のセキュリティや通信方式に対応できます。ツールごとにバラバラに開発するより、共通部分は共通のCLIに任せたほうが確実 だからです。
Google Workspace CLIのセットアップを実施を続ける
なるほど。最終的なゴールはgcloud CLIだけでも達成できそうな気がしてきましたが続けていきましょう。
gcloud CLIを入れてみる。エラーも特になし。次。
brew install --cask google-cloud-sdkGWSアカウントでログインする。
gcloud initサインインを求められたのでとりあえずYes
Welcome! This command will take you through the configuration of gcloud.
Your current configuration has been set to: [default]
You can skip diagnostics next time by using the following flag:
gcloud init --skip-diagnostics
Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).
You must sign in to continue. Would you like to sign in (selecting "Y" will open your browser to the
sign-in page where you complete authentication) (Y/n)? ブラウザに移動するので認証する。
サインインできた。
次に、「プロジェクト」という作業場を用意してあげる必要があるようだ。作っていく。
You are signed in as: [aaa@bbb.com].
This account has no projects.
Would you like to create one? (Y/n)? プロジェクトIDを設定する。「test-001」と打ってみた。
Enter a Project ID. Note that a Project ID CANNOT be changed later.
Project IDs must be 6-30 characters (lowercase ASCII, digits, or
hyphens) in length and start with a lowercase letter. むむむ、、エラー。英語かなり弱いのでGeminiに相談します。
This account has no projects.
Would you like to create one? (Y/n)? y
Enter a Project ID. Note that a Project ID CANNOT be changed later.
Project IDs must be 6-30 characters (lowercase ASCII, digits, or
hyphens) in length and start with a lowercase letter. test-001
WARNING: Project creation failed: HttpError accessing <https://cloudresourcemanager.googleapis.com/v1/projects?alt=json>: response: <{'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'content-encoding': 'gzip', 'date': 'Sat, 07 Mar 2026 02:02:10 GMT', 'server': 'ESF', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'server-timing': 'gfet4t7; dur=209', 'alt-svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000', 'transfer-encoding': 'chunked', 'status': 409}>, content <{
"error": {
"code": 409,
"message": "Requested entity already exists",
"status": "ALREADY_EXISTS"
}
}
>
Please make sure to create the project [test-001] using
$ gcloud projects create test-001
or change to another project using
$ gcloud config set project <PROJECT ID>
The Google Cloud CLI is configured and ready to use!
* Commands that require authentication will use aaa@bbb.co.jp by default
Run `gcloud help config` to learn how to change individual settings
This gcloud configuration is called [default]. You can create additional configurations if you work with multiple accounts and/or projects.
Run `gcloud topic configurations` to learn more.
Some things to try next:
* Run `gcloud --help` to see the Cloud Platform services you can interact with. And run `gcloud help COMMAND` to get help on any gcloud command.
* Run `gcloud topic --help` to learn about advanced features of the CLI like arg files and output formatting
* Run `gcloud cheat-sheet` to see a roster of go-to `gcloud` commands.Gemini曰く、
Gemini曰く、test-001 というプロジェクトIDは、世界中の誰かがすでに使っているため、作成に失敗しました。 Google CloudのプロジェクトIDは「世界で唯一(グローバル・ユニーク)」である必要があります。たとえ自分のアカウントにプロジェクトがなくても、他の誰かが test-001 を使っていれば、その名前は使えません。
じゃあ被らないように再度作ってみよう。(以降はIDっぽいものは全てマスクしてます)
# 1. 新しいIDでプロジェクトを作成
gcloud projects create xxxxxxxまたエラー。GeminiによるとGoogle Cloudに入って利用規約に同意する必要があるらしい。
Create in progress for [https://cloudresourcemanager.googleapis.com/v1/projects/xxxxxxx].
Waiting for [operations/create_project.global.xxxxxx] to finish...failed.
ERROR: (gcloud.projects.create) Operation [create_project.global.xxxxx] failed: 9: Callers must accept Terms of Service
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
violations:
- description: Callers must accept Terms of Service
subject: cloud
type: TOS
利用規約に同意しましょう。
- Google Cloud Console にアクセスします。https://console.cloud.google.com/
- ログインすると、画面上部やポップアップで 「利用規約に同意してください」 という案内が出るはずです。
- 同意にチェックを入れて「同意して続行」を押します。
よし、再チャレンジ。できたのか?
gcloud projects create xxxxxx
Create in progress for [https://cloudresourcemanager.googleapis.com/v1/projects/xxxxxxx].
Waiting for [operations/create_project.global.yyyyyyyy] to finish...done.
Enabling service [cloudapis.googleapis.com] on project [xxxxxxx]...
Operation "operations/acat.zzzzzzzz" finished successfully.Google Cloudコンソールで確認してみると、お、プロジェクトできてるっぽい。
作ったプロジェクトをデフォルトのプロジェクトにします。
gcloud config set project プロジェクト名こんなメッセージが出ました。よし、プロジェクトはできたようです。
Updated property [core/project].さて、やっとgwsに戻ってきました、セットアップ再開。
gws auth setupおー、セッティングできる画面に進みました。Step1〜3はデフォルトで選択されている値を設定しました。Step4のWorkspace APIsはAllにしてみます。
次はOAuthだとぅ・・・。
助けてGemini。これは何をするんだい?
Google Workspace CLI (gws) を「自分専用のセキュアな道具」にするために、Google Cloud上で**「OAuth 2.0 クライアントID」という鍵**を自作する工程です。記載のある通りに実施しましょう。
お、おう!早速、StepAのURLへ遷移するとこんな画面に。「開始」をクリック。
アプリ情報を入力。アプリ名は適当。ユーザーサポートメールを選択。次へ。
対象は外部を選択。
連絡先情報を入れて、作成をクリック。
次に、メニューの概要から「OAuthクライアントを作成」をクリック。
アプリケーションの種類は「デスクトップアプリ」を選択。名前は適当。
クライアントIDが発行されるのでコピーしてメモしておく。秘密鍵が記載されているであろうJSONがなぜかダウンロードできないため秘密鍵を作りに行く。
メニューのクライアントから作成したOAuthを選択
Add Secretを選択して、秘密鍵を作成してメモしておく。
次はメニューから対象を押して、Add Userをクリック。
OAuthと同じユーザを追加する。
ターミナルに戻って、IDを貼り付けてエンター。
秘密鍵の入力も求められるので秘密鍵を貼り付けてエンター。
完了メッセージが表示された!設定できたっぽいぞ!!
✅ Setup complete! Run `gws auth login` to authenticate.CLIが使えるのか確認してみよう。まずはログインして権限の設定から。
gws auth login権限の選択はGeminiからアドバイスをもらいRecommendedにしておいた。driveにチェックが入ったので今回のゴールであるGoogle Driveのリスト取得は大丈夫だろう。
エンターを押すと以下のようなメッセージが。URL開いてねということらしい。開く。
Open this URL in your browser to authenticate:
https://accounts.google.com/o/oauth2/auth?xxxxxxxxx確認画面が出てきた。
Gemini曰く、
「『このアプリは確認されていません』はテストモードの外部アプリでは必ず表示される正常な挙動」 自作ツールを動かす際、必ずこの物騒な画面が出ますが、これは「テストモード」である証拠です。自分が開発者(デベロッパー)であり、内容を信頼できる場合は、迷わず『続行』を押して認証を完遂させましょう。
よし、続行しよう。
また、権限選択が出てきた。
Gemini曰く、
はい、これが正真正銘、最後の手続きです! 先ほどターミナル(黒い画面)で選んだ「やりたいこと(スコープ)」に対して、Googleが「本当にこのアプリ(My GWS CLI)にその権限を渡していいんだね?」と念押しで最終確認を求めてきています。 ※ここを個別に外してしまうと、後でAIエージェントに指示を出したときに「権限が足りません」というエラーで止まってしまいます。
しっかりと内容を確認して、私は「すべて選択」にチェックを入れました。今回は検証目的のため「すべて選択」としましたが、本番運用では必要最小限のスコープのみ選択することがセキュリティ上推奨されますのでご注意ください。
ターミナルを見てみると成功のメッセージが表示されていた。
{
"account": "aaa@bbb.com",
"credentials_file": "/Users/xxxxx/.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",
"https://www.googleapis.com/auth/gmail.modify",
"https://www.googleapis.com/auth/documents",
"https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/presentations",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/tasks",
"https://www.googleapis.com/auth/cloud-platform",
"openid",
"https://www.googleapis.com/auth/userinfo.email"
],
"status": "success"
}Google Driveのファイル一覧をgwsで取得する
よし、それではGoogle Driveにアクセスしてみます。
gws drive files listおー、出ててきた!
{
"files": [
{
"id": "xxxxxxxxxxxxxxxxx",
"kind": "drive#file",
"mimeType": "application/vnd.google-apps.spreadsheet",
"name": "案件管理 2026"
},
{
"id": "yyyyyyyyyyyyyyyyy",
"kind": "drive#file",
"mimeType": "application/vnd.google-apps.spreadsheet",
"name": "案件管理 2025"
},
],
"incompleteSearch": false,
"kind": "drive#fileList",
"nextPageToken": 省略
}
なんとか今回のゴールは達成できました!!Google Workspace CLIのセットアップが長かった〜。。。
次回はAntigravityとの連携をして、最終ゴールまで行けたらいいなと思ってます!
気になったことにはどんどんとチャレンジしていきたいですね。