# 作業手順書：Google スプレッドシート・スライド・ドキュメントを Claude Code から「更新」できるようにする

> この文章は、ユーザーが CLAUDE CODE CLUB の記事「作れるのに、直せない」の末尾からコピーし、あなた（Claude）に貼り付けたものです。人間向けの解説ではなく、**あなたが実行するための作業手順書**です。
> 出典：https://blog.claudecodeclub.jp/posts/google-sheets-edit-mcp

---

## 0. Claude Code へ（最初に必ず読む）

あなた（Claude Code）は、ユーザーの環境で **Google スプレッドシート・スライド・ドキュメントの中身を、ファイルを増やさずに書き換えられる状態** を作る。最初に今の状態を診断し、足りないときだけ設定を足す。

### 実行環境の確認（最優先）

- この手順は設定ファイルの書き換えとコマンド実行を伴う。あなたが **Claude Code（ターミナル、IDE 拡張、またはデスクトップアプリの Code タブ）** として動いていて、シェルとファイル書き込みが使えることを確認する。
- claude.ai のチャット欄やスマホアプリなど、ローカルのコマンドを実行できない環境で貼られた場合は、**何も実行せず**、「この手順書は Claude Code（デスクトップアプリの Code タブ、またはターミナルの `claude`）に貼り直してください」と短く伝えて止まる。
- OS を判定する（macOS／Windows／Linux）。設定ファイルの場所やコマンドが違うときは OS に合わせる。

### 守ること

1. **秘密の値を画面に出さない。** OAuth クライアント ID・クライアントシークレット・トークン・サービスアカウントの鍵の中身は、チャットへの表示・ログ出力・コミットをしない。設定を読むときは値を伏せる（例：`jq` で env のキー名だけ出す）。
2. **設定ファイルを書き換える前に、必ずバックアップを取る。**（`~/.claude.json`、使っていればデスクトップアプリの `claude_desktop_config.json`）
3. **ユーザーの既存のファイルを書き換えて試さない。** 試すときは、必ず新しく作ったテスト用のファイルを使い、終わったらゴミ箱へ移す（完全削除はしない）。
4. **人間にしかできない操作は、ユーザーに頼む。** Google Cloud Console での API 有効化（ブラウザ操作ツールが無い場合）、Google の許可画面での「許可」。頼むときは「どの画面で・何を押すか」を1つずつ書く。
5. 手順ごとに「確認」が通ってから次へ進む。
6. ユーザーへの説明は、ユーザーの言語で、専門用語を避けて短く。

### 最初にユーザーへ聞くこと（まとめて1回で）

- 書き換えたいのはどれか：Google スプレッドシート／Google スライド／Google ドキュメント／パソコンの中の PowerPoint・Excel ファイル（複数可）
- 書き換えに使う Google アカウントのメールアドレス
- （サービスアカウントが見つかった場合のみ）自分のアカウントとして書き換える方法（方法1）に寄せるか、ボットに共有した表だけ書き換える方法（方法2）を続けるか

パソコンの中の PowerPoint・Excel だけなら、MCP は不要。Python（`python-pptx`・`openpyxl`）でファイルを直接書き換えられることを伝え、テスト用ファイルで1か所書き換えて見せて終わる。

---

## 1. 今の状態を診断する

1. あなたが今使える MCP の道具の一覧から、Google 関係のものを書き出す。それぞれ「新しく作る道具」と「中身を書き換える道具」に分ける。
   - Claude 公式の Google ドライブ コネクタの `update_file` は**名前と親フォルダしか変えられない**。中身の書き換えには数えない。
   - google_workspace_mcp（`workspace-mcp`）の `update_drive_file` はファイルを丸ごと入れ替える道具。セル単位・スライド単位の書き換えには数えない。
   - 書き換えに数えるのは、スプレッドシートのセル範囲を更新する道具、ドキュメントの文章を挿入・置換する道具、スライドを batchUpdate する道具。
2. `~/.claude.json` の `mcpServers`（ユーザー全体）と、各プロジェクトの `projects.<パス>.mcpServers` を読み、Google 関係の MCP の起動引数を確認する（値は伏せる）。
   - `workspace-mcp` があれば、`--tools` の中身を見る。`sheets` `docs` `slides` が入っていなければ、それが「直せない」原因。`--tools` 自体が無ければ全部入っている。
   - `mcp-gsheets` などサービスアカウント型があれば、鍵ファイルのパスと `client_email`（ボットのメールアドレス）だけ確認する。
3. 結果を表でユーザーに見せる：サービスごとに「作れる／書き換えられる／書き換えられない」。

**確認**：ユーザーが選んだサービスで書き換えの道具がすでにあれば、手順4の「動作確認」だけ行って終わる。

---

## 2. 方法1：google_workspace_mcp に sheets／docs／slides を足す（基本はこちら）

`workspace-mcp` がすでに入っている場合。入っていない場合は、まず記事「Google アカウントを複数、Claude に常時つなぐ手順」（https://blog.claudecodeclub.jp/posts/google-multi-account-mcp ）の手順書で導入してから戻る。その際 `--tools` に最初から `sheets docs slides` を入れる。

1. **API を有効にする（ユーザーに頼む）。** OAuth クライアントを作った Google Cloud プロジェクトで、「API とサービス」→「ライブラリ」から次を検索して「有効にする」：
   - Google Sheets API
   - Google Docs API
   - Google Slides API
   （ユーザーが選んだものだけでよい。プロジェクト ID は OAuth クライアント ID から特定できないので、どのプロジェクトか分からなければユーザーに Cloud Console の上部のプロジェクト名を確認してもらう）
2. **バックアップを取る。** `cp ~/.claude.json ~/.claude.json.bak-<日付>`
3. **`--tools` に足す。** `~/.claude.json` の該当する `workspace-mcp` の `args` で、`--tools` のあとに `sheets` `docs` `slides`（選んだものだけ）を足す。ユーザー全体（`mcpServers`）とプロジェクトごと（`projects.*.mcpServers`）の両方に登録されている場合は、**全部**に足す。JSON を壊さないよう、Python や `jq` で読み書きし、書いたあと JSON として読み直して検証する。
   - デスクトップアプリのチャット欄でも使っているなら、`claude_desktop_config.json` の同じ箇所にも足す。
4. **Claude Code を開き直すようユーザーに頼む**（MCP は起動時に読み込まれる）。開き直したら、この手順書をもう一度貼ってもらい、手順4から続ける。
5. **許可を取り直す。** 初めてスプレッドシート等の道具を使うと、増えた権限の許可画面の URL が出る。ユーザーに「普段ログインしているブラウザで開き、対象アカウントを選んで『許可』」と頼む。「このアプリは Google で確認されていません」は正常（「詳細」→「（アプリ名）に移動」）。複数アカウントを使っているなら、アカウントごとに1回ずつ。

---

## 3. 方法2：サービスアカウント型（mcp-gsheets 等）を使う場合

ユーザーが「ボットに共有した表だけを書き換えたい」と選んだとき、またはすでにこの形で動いているときだけ。

- 書き換えたいスプレッドシートを、**ボットのメールアドレス（`client_email`）に「編集者」で共有する**ようユーザーに頼む（共有の通知メールは不要）。
- **ボットに新しいファイルを作らせない。** 無料の Google アカウント配下のサービスアカウントはドライブ容量が 0 で、新規作成は必ず失敗する（`storageQuota.limit` が `"0"`）。新しい表は、ユーザー本人のアカウント（または方法1の道具）で作ってから、ボットに共有する。
- 書き換えて `Permission denied` が出たら、まず共有されているかを疑う。

---

## 4. 動作確認（必ずテスト用ファイルで）

1. ユーザーのアカウントで、テスト用のスプレッドシート「【テスト】Claude 更新チェック」を新しく作る（中身：A1「項目」B1「値」、A2「状態」B2「作成直後」）。スライド・ドキュメントを選んだ場合は、それぞれテスト用を1つずつ作る。
2. 書き換えの道具で、B2 を「Claude が書き換えた」に変える。スライドは1枚目のタイトル、ドキュメントは1行目を書き換える。
3. 別の道具（ファイルの内容を読む道具）で読み直し、**同じファイル ID のまま中身が変わっている**こと、**同じ名前のファイルが増えていない**ことを確かめる。
4. テスト用ファイルをゴミ箱へ移す。

**確認**：3 が通れば完了。

---

## 5. 最後の報告

ユーザーに短く報告する：

- 診断の結果（最初は何ができて、何ができなかったか）
- 何を足したか（どの設定ファイルのどこ。バックアップの場所）
- 動作確認の結果（どのサービスで、何を書き換えられたか）
- これからの頼み方の例：「◯◯の表の C5 を 1200 に直して」「◯◯のスライドの3枚目のタイトルを変えて」（ファイル名か URL を言えば通る）

---

## ハマりどころ（症状 → 原因 → 対処）

| 症状 | 原因 | 対処 |
|---|---|---|
| 「直して」と頼むと、同じ名前の新しいファイルが増える | 書き換えの道具が無く、作る道具で代用している | 手順1で診断し、方法1で道具を足す |
| `--tools` に足したのに道具が出てこない | Claude Code を開き直していない／別の場所の設定を書き換えた | 開き直す。ユーザー全体とプロジェクトごとの両方の設定を確認する |
| 道具は出るが `API has not been used in project` 等のエラー | その API が Cloud プロジェクトで有効になっていない | 手順2-1 の API を有効にし、数分待ってから再実行 |
| `insufficient authentication scopes` 等の権限エラー | 足した道具の分の許可を取り直していない | 出てきた許可画面の URL で「許可」し直す |
| サービスアカウントで `Permission denied` | 表がボットに共有されていない | ボットのメールアドレスに「編集者」で共有 |
| サービスアカウントで新規作成が必ず失敗 | ボットのドライブ容量が 0（無料アカウントの仕様） | 作るのは本人、書き換えるのはボット、と分ける |
| 「このアプリは Google で確認されていません」 | 自作の OAuth アプリを審査に出していないだけ | 正常。「詳細」→「（アプリ名）に移動」 |
