7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2026年3月リリース】Google公式CLI「gws」をClaude Codeに連携してGoogle Workspaceを自動操作する

7
Last updated at Posted at 2026-05-12

2026年3月、Google DevRelから Google Workspace 公式CLI gws がリリースされました(googleworkspace/cli)。Drive・Sheets・Gmail・Calendar・Docs・Meet など27サービスを ターミナルから1行で叩ける OSSツールです。

これを Claude Code に繋いでみたら、 「先週のMeet録画一覧を取得して」「議事録Docを作って」みたいな依頼を日本語1行で投げられる ようになりました。Drive・Sheets・Calendar・Docs・Meet の5機能を実機で疎通確認した記録を共有します。

  • 検証バージョン: gws 0.22.5 / Node.js v18+ / Mac (zsh) と Windows (Git Bash) の両方で動作確認
  • 想定読者: Claude Code は触ったことがあるが、Google Workspace 連携はこれから、という人

今日の旅路:Claude Code から Google Workspace を動かす


なぜCLI? GUI / API / CLI を一旦整理

最初に用語だけ揃えておきます(既知の人は読み飛ばしOK)。

  • GUI: ブラウザでDriveを開いてクリック。直感的だけど繰り返しに弱い
  • API: システム同士の窓口。Google側に既にある「向こう側のドア」
  • CLI: ターミナルから1行打って動かす方法。今日の主役

API はレストランのウェイターに例えると分かりやすい。お客(プログラム)→ ウェイター(API)→ 厨房(Google)の3層構造で、人が画面をクリックしなくても、プログラムが「ウェイター」越しに「このシートの値を取って」と直接お願いできる仕組みです。

API=システム同士の通り道(レストランの比喩)

ここで混乱しがちなのが「CLIとAPIってどう違うの?」という話。GUI と CLI は『あなたの操作方法』、APIは『Googleが用意した窓口』 で、そもそもレイヤーが違います。

CLI と API、何が違う?

業務側から見ると、 AIに任せたいときはCLIが圧倒的に楽 です。GUI操作のAI代行(Computer Use 系)は遅いしコストも高く、現状は確定的に動くCLI一択。「Aシートの売上を抜き出してSlackに流して」が1秒以内・確実に返ります。

AI × GUI vs AI × CLI

gwsこのCLI側の役割を担うツール で、内部で Google API を叩いてくれます。AIを介さない素のCLI操作だと、流れはこんな感じ。

CLIから API を叩く:素の4ステージ

GUI / CLI、どっちが業務に向くかの早見表も貼っておきます。1件だけ・直感的な作業はGUIで十分、定期実行・他システム連携・AI連携はCLI、と切り分けるとシンプル。

GUI と CLI(gws)使い分け早見表


セットアップ:詰まりやすい認証だけ落ち着いて

1. Node.js を確認

gws は Node.js で動くので、まずバージョン確認します。

node --version  # v18 以上を推奨
npm --version

未インストールなら Mac は brew install node、Windows は winget install OpenJS.NodeJS.LTS

2. gws をインストール

npm install -g @googleworkspace/cli
gws --version
# → gws 0.22.5

3. Google Cloud Console で「自分用の鍵」を作る

ここが詰まりポイントでした。やることは5ステップ。

① Google Cloud Console でプロジェクトを作る
② Drive / Sheets / Calendar / Docs / Meet の API を有効化
③ OAuth 同意画面を設定(Workspaceなら「内部」推奨)
④ OAuth クライアントID(デスクトップアプリ)を作る
⑤ client_secret.json をダウンロード → ~/.config/gws/ に置く

@xxx.co.jp のような Workspace組織アカウントなら同意画面で「内部」を選ぶ のが安全。「外部」だとテストユーザー追加・未確認警告など、ハマり所が増えます。個人 Gmail を使う場合だけ「外部」+テストユーザーに自分を追加する、という運用になります。

クライアントID作成のときの アプリケーション種別は「デスクトップアプリ」。JSONをダウンロードしたら所定パスに置きます。

# Mac / Linux / WSL / Git Bash
mkdir -p ~/.config/gws
mv ~/Downloads/client_secret_*.json ~/.config/gws/client_secret.json

このJSONは 「自分のPCがGoogleとして振る舞える鍵」 です。Gitにコミットしない・Slackに貼らない。漏れたらCloud Consoleから即削除して再発行、を覚えておきます。

4. gws auth login で認証

gws auth login --scopes "https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/documents,https://www.googleapis.com/auth/meetings.space.readonly,https://www.googleapis.com/auth/cloud-platform"

このコマンドは1行 です。改行が混ざると error: a value is required for '--scopes <scopes>' but none was supplied が出るので注意。

ブラウザが開くので業務用アカウントを選び、全権限にチェックが入った状態で「許可」。終わったら確認します。

gws auth status
# token_valid: true と、スコープが6種類以上付いていればOK

サービス名指定(-s drive,sheets,...)よりも --scopes でフルURL指定のほうが、スコープ取り漏れを防げます。

5. --params--json の使い分け

gws のコマンドで頻出する2つのフラグ。最初に押さえておくと混乱しません。

フラグ 何を渡すか
--params URL/クエリ的なパラメータ(ID・range・pageSize・検索クエリ等) --params '{"spreadsheetId": "X", "range": "A1:E10"}'
--json リクエストボディ(書き込む値・新規作成内容) --json '{"values": [["a","b"]]}'

values update のように両方を同時に使うコマンドもあります(「どこに=--params」「何を書く=--json」)。


Claude Codeに「公式スキル」を覚えさせる

ここからが Claude Code との連携。最終的に作りたい構成はこんな3層スタック。

全体像(俯瞰):あなた/Claude Code+公式スキル群/gws・API・Workspace

実行時の信号の流れで見ると、人 → Claude Code → gws CLI → Google API → Workspace の5段バケツリレー。Claude Code が「自然言語」と「gws の正しい構文」を変換するハブになります。

処理の流れ:人→Claude Code→gws CLI→API→Workspace

このハブを成立させるのが 公式スキル群。Google公式リポジトリには 約95個のAgent Skill が用意されていて、Drive・Sheets・Gmail の細粒度操作から、standup-report のような複合ワークフローまで揃っています。

専用ディレクトリを切って、 プロジェクトスコープで一括インストール します(グローバルでなく)。

mkdir -p ~/gws-handson
cd ~/gws-handson
npx skills add https://github.com/googleworkspace/cli --all

確認:

ls .agents/skills/ | wc -l   # → 90個前後

スキルの内訳(執筆時点 v0.22.5):

カテゴリ 個数
コアサービス 約14 gws-drive gws-sheets gws-gmail gws-calendar gws-docs gws-meet
細粒度の操作 約20 gws-sheets-read gws-gmail-send gws-gmail-reply
ワークフロー(複合) 6 gws-workflow-standup-report gws-workflow-weekly-digest
ペルソナ(職種別) 10 persona-project-manager persona-sales-ops
レシピ(業務シナリオ) 40+ recipe-save-email-attachments recipe-find-free-time
セキュリティ 4 gws-modelarmor-*(プロンプトインジェクション検査)

このディレクトリで Claude Code を起動すると、 自動的に .agents/skills/ 配下が認識 されます。

cd ~/gws-handson
claude

「今インストールされている gws 系のスキルを一覧して」と頼めば、.agents/skills/ を読んでずらっと並べてくれます。


5機能を実際に動かしてみる

ここからは Claude Code に 日本語で頼む スタイルで。実行は Claude Code 側で勝手にやってくれるので、出てきたコマンドを横目に確認するだけです。

Drive:直近のファイル一覧 と Meet録画フォルダ検索

gws を使って、自分の Drive の最近変更されたファイルを3件だけ表示して

組み立てられたコマンド:

gws drive files list \
  --params '{"pageSize": 3, "orderBy": "modifiedTime desc", "fields": "files(id,name,mimeType,modifiedTime)"}' \
  --format json

Meet録画は Drive の 「Meet Recordings」 フォルダに自動保存されるので、こんなクエリで探せます。

gws drive files list \
  --params '{"q": "name contains \"Meet Recording\"", "pageSize": 5, "fields": "files(id,name,mimeType,modifiedTime,parents)"}' \
  --format json

Sheets:作成 → 書き込み → 読み込み → 追記

スプレッドシートまわりは4ステップで一通り触れます。

新しいスプレッドシートを作って。タイトルは「DXタスクリスト」、最初のタブ名は「tasks」にして。spreadsheetId を教えて。
gws sheets spreadsheets create \
  --json '{"properties": {"title": "DXタスクリスト"}, "sheets": [{"properties": {"title": "tasks"}}]}' \
  --format json

返ってきた spreadsheetId<SHEET_ID> として、ヘッダと3行のデータを書き込みます。

<SHEET_ID> の tasks!A1:E4 に、タスクID/担当/内容/期限/ステータスの4行を書いて

Claude Code が gws sheets spreadsheets values update を組み立てて実行。 書き込み系は承認画面で範囲を毎回確認 する運用が前提。慣れるまでは題材シート(コピー)で動作確認するのが無難です。

末尾追加は values append で。

tasks シートの末尾に新しいタスクを1行追加して。タスクID: DXAI-4 / 担当: 自分 / 内容: ハンズオン宿題 / 期限: 1週間後 / ステータス: 未着手

Calendar:今日の予定をAIに聞く

gws calendar +agenda --format json

返り値の例:

{
  "count": 4,
  "events": [
    {
      "start": "2026-05-12T10:00:00+09:00",
      "end":   "2026-05-12T11:00:00+09:00",
      "summary": "顧客様A"
    }
  ]
}

+agenda+ プレフィックスはヘルパーコマンド の印。素のAPIだと calendar events list を複数カレンダーに対して回す必要があるところを、1コマンドで束ねてくれます。

Docs:議事録メモを新規作成して本文を挿入

gws docs documents create --json '{"title": "DX議事録メモ"}' --format json

本文挿入は gws docs documents batchUpdateinsertText リクエスト。Claude Code に「以下の本文を挿入して」と Markdown ベタ書きで頼めば、内部でJSONに変換してくれます。

⚠️ 403 Google Docs API has not been used in project ... が返るときは、API有効化漏れの可能性が高いです。Cloud Console で docs.googleapis.com を有効化すると即解消します(自分の場合、新規プロジェクトを作らず既存プロジェクトの client_secret を流用していたため Docs/Meet API が有効化されておらず、ここでハマりました)。

Meet:公式APIで会議記録を取得

gws meet conferenceRecords list --params '{"pageSize": 3}' --format json

返り値の例(実機で取得):

{
  "conferenceRecords": [
    {
      "name": "conferenceRecords/...",
      "space": "spaces/...",
      "startTime": "2026-05-01T00:58:13.285085Z",
      "endTime": "...",
      "expireTime": "2026-05-31T..."
    }
  ]
}

⚠️ conferenceRecords 系API は Workspace Business Standard 以上のエディションでのみ動作 します。Starter / Individual の場合は、上の Drive セクションで紹介した「Meet Recordings」フォルダ検索で代替できます。


ワークフロースキル:1コマンドで朝会レポを作る

公式スキルの中には 複数APIを束ねた業務直結のヘルパー が6個あります。代表が standup-report

gws workflow +standup-report --format table

1コマンドで 「今日のカレンダー予定」+「未完了の Google Tasks」 が朝会形式でまとまって返ります(内部は calendar +agendatasks list を束ねたもの)。

他にも揃っています。

実行コマンド 何をする
gws workflow +standup-report 朝会レポ(今日の予定 + 未完了タスク)
gws workflow +weekly-digest 週次まとめ(今週の会議 + 未読メール数)
gws workflow +meeting-prep 次の会議の準備(議題・出席者・関連Doc)
gws workflow +email-to-task メール → Google Tasks に変換
gws workflow +file-announce Drive ファイルを Chat に告知

複合タスクも日本語1行で投げられます。

今日のカレンダー予定をもとに、各打ち合わせの議事録テンプレートDocを新規作成して。
タイトルは「議事録_<会議名>_<日付>」で。先週のMeet録画一覧もDocの末尾に添えて。

これで Claude Code が内部で「Calendar から今日の予定を取得 → 各予定について Doc を新規作成 → タイトルを動的生成 → Meet conferenceRecords を取得 → 本文に埋め込み」までを組み立てて実行します。スキル群があると Claude Code側が正しいコマンドの引数を"知っている"前提で会話できる ため、自然言語の指示だけで複合タスクが回せます。


ハマりやすいポイント Top5

実際に詰まった順に整理します。

# 症状 原因 抜け道
access_denied OAuth同意画面のテストユーザー未追加(「外部」モード) Workspaceなら「内部」に切替、または「外部」のままテストユーザーに自分追加
403 API has not been used 既存プロジェクトの client_secret.json を流用していて、必要なAPIが有効化されていない(自分はこれで Docs/Meet が動かないと勘違いした)/本当に有効化直後なら伝播遅延も数分ある gcloud services list --enabled --project=<ID> で確認 → 不足は gcloud services enable docs.googleapis.com meet.googleapis.com --project=<ID> で一括有効化
403 Insufficient authentication scopes スコープ不足 gws auth login --scopes "<URL>,<URL>,..." でフルURL指定して再認証
Meetの conferenceRecords が空 or 動かない Workspaceエディション制約(Starter/Individualは不可) Business Standard以上が必要。下位エディションなら Drive 経由で「Meet Recordings」フォルダを検索
zsh/bash で Sheet1!A1 が壊れる ! が履歴展開と解釈される シングルクォートで囲む--params '{"range": "tasks!A1:E10"}'

特に②は、ハンズオン教材だと「新規プロジェクトを作って API 有効化」の流れになっていますが、 既存プロジェクトの認証鍵をそのまま使い回すと、教材通り進めたつもりでも API 有効化漏れが起きる という落とし穴です。gws auth statusenabled_apis を覗くと一発で気づけます。


まとめ

  • gwsGoogle DevRel主導のOSSgoogleworkspace/cli)。Workspace 27サービスを1ツールでカバー
  • Claude Code との連携は 公式スキル群(95個)の一括インストールがキモ。AIが gws の正しい構文を"知ってる"状態を作れる
  • セットアップで一番詰まるのは OAuth同意画面とAPI有効化の伝播遅延。ここを抜ければあとは日本語で頼むだけ

公式リポジトリ配布なので素性は確かですが、Workspace 製品本体のような有償サポート(SLA)が付く位置付けではない点だけ留意。業務クリティカルな自動化に乗せる前にはチームで動作確認しておきたいところです。

関連記事

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?