CodexやClaude Codeのターミナルから非公開Googleスプレッドシートを直接操作する方法
Google Workspaceのスプレッドシートは、全体公開しなくてもCodexやClaude Codeのターミナルから読み書きできます。ポイントは、AIに直接シートを開かせるのではなく、Google Sheets API、認証情報、権限設計をコードベース側に用意することです。
この記事では、非公開のGoogleスプレッドシートをCodexやClaude Codeから安全に操作するために、サービスアカウント方式、外部共有で止まる場合の原因、ドメインワイドデリゲーション、OAuth方式、実際のPythonコードまで実務向けにまとめます。
前提:本記事は2026年5月24日時点のGoogle Workspace、Google Sheets API、Google Drive共有設定、Anthropic Claude Code公式情報をもとにしています。組織のGoogle Workspace管理ポリシーによって使える認証方式が変わるため、実装前に必ず自社の管理者設定を確認してください。
結論:非公開シートを操作する方法は4つある
CodexやClaude CodeのターミナルからGoogleスプレッドシートを操作する場合、選択肢は大きく4つあります。個人プロジェクトではサービスアカウント共有が最も簡単ですが、Google Workspace組織では外部共有制限で止まることがあります。
| 方法 | 向いているケース | 管理者対応 | 注意点 |
|---|---|---|---|
| サービスアカウントをシートに共有 | 個人利用、小規模自動化、外部共有が許可されている組織 | 不要なことが多い | Workspaceでは外部アカウント扱いで共有拒否されることがある |
| ドメインワイドデリゲーション | 組織内の非公開シートを業務システムから扱う | スーパー管理者の承認が必要 | 強力な権限なのでスコープと運用監査が重要 |
| OAuthで自分のユーザーとして操作 | 自分がアクセス権を持つシートをローカルから操作する | 組織のOAuthアプリ制限次第 | 初回ブラウザ認証が必要。チーム共有やCIには向きにくい |
| Google Apps Scriptを窓口にする | Workspace内で完結させたい、APIキーを外に出したくない | デプロイ設定次第 | 複雑な処理や大量更新には設計が必要 |
おすすめの考え方:まずサービスアカウント共有を試し、Workspaceの外部共有制限で止まるなら、組織向けにはドメインワイドデリゲーションか専用Workspaceユーザー、軽い自動化ならApps Scriptを検討します。
CodexやClaude Codeから直接操作するとはどういうことか
ここでいう「直接操作」は、CodexやClaude Codeのチャット画面がGoogle Sheetsにログインするという意味ではありません。実際には、コードベースにGoogle Sheets APIを呼ぶスクリプトを用意し、AIエージェントにそのスクリプトを読み、修正し、ターミナルで実行させる形になります。
構成は次のように考えるとわかりやすいです。
| 要素 | 役割 |
|---|---|
| Codex / Claude Code | コードを書く、スクリプトを実行する、結果を見て修正する |
| Python / Node.jsスクリプト | Google Sheets APIを呼び出す実体 |
| Google認証情報 | 非公開シートにアクセスするための鍵 |
| Google Workspace共有設定 | その認証主体がシートへアクセスできるかを決める |
つまり、AIエージェントに与えるべきなのは「スプレッドシートのURL」だけではありません。SPREADSHEET_ID、認証方式、読み書きするシート名、許可する操作、実行コマンドをコードベースに明示しておく必要があります。
最短構成:サービスアカウントで非公開シートを読む
個人利用や外部共有が許可されたWorkspaceでは、サービスアカウントを使うのが最も手早い方法です。サービスアカウントは、人間のGoogleアカウントではなく、アプリケーション用のGoogle Cloud上のアカウントです。
手順1:Google CloudでAPIを有効化する
- Google Cloud Consoleでプロジェクトを作成する
- Google Sheets APIを有効化する
- 必要に応じてGoogle Drive APIも有効化する
- サービスアカウントを作成する
- JSONキーを作成してローカルに保存する
Drive APIは、単に既知のspreadsheetIdを読み書きするだけなら必須ではありません。ただし、ファイル検索、権限確認、共有設定の操作、Drive上のメタデータ取得をする場合は必要になります。
手順2:非公開シートにサービスアカウントを共有する
サービスアカウントを作ると、次のようなメールアドレスが発行されます。
my-sheets-bot@your-project-id.iam.gserviceaccount.comこのメールアドレスを、対象スプレッドシートの共有相手に追加します。読み取りだけなら閲覧者、追記や更新をするなら編集者にします。
ここで詰まりやすい点:Google Workspaceの管理設定で外部共有が制限されている場合、サービスアカウントへの共有が拒否されることがあります。サービスアカウントのドメインは通常gserviceaccount.com系で、社内ドメインのユーザーではないためです。
手順3:コードベースを用意する
例として、次のような構成にします。
my-project/
scripts/
sheets_read.py
sheets_append.py
sheets_update.py
.env.example
requirements.txt
.gitignore認証JSONはプロジェクト直下に置かず、できればホームディレクトリ配下など、AIエージェントが不用意に読み込まない場所に置きます。
~/.config/google-service-accounts/sheets-bot.jsonPythonで読む・追記する・更新するサンプル
ここでは、Google公式のgoogle-api-python-clientとgoogle-authを使います。CodexやClaude Codeに依頼する場合も、このように小さなスクリプトを用意しておくと、AIが安全に修正しやすくなります。
requirements.txt
google-api-python-client==2.*
google-auth==2.*
python-dotenv==1.*.env.example
GOOGLE_APPLICATION_CREDENTIALS=/Users/yourname/.config/google-service-accounts/sheets-bot.json
SPREADSHEET_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SHEET_NAME=Sheet1.gitignore
.env
*.credentials.json
service-account*.json
secrets/
.claude/settings.local.json共通クライアント
まず、Sheets APIクライアントを作る共通関数を用意します。
# scripts/sheets_client.py
import os
from google.oauth2 import service_account
from googleapiclient.discovery import build
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
def build_sheets_service():
credentials_path = os.environ["GOOGLE_APPLICATION_CREDENTIALS"]
credentials = service_account.Credentials.from_service_account_file(
credentials_path,
scopes=SCOPES,
)
return build("sheets", "v4", credentials=credentials)シートを読む
# scripts/sheets_read.py
import os
from dotenv import load_dotenv
from sheets_client import build_sheets_service
load_dotenv()
spreadsheet_id = os.environ["SPREADSHEET_ID"]
sheet_name = os.environ.get("SHEET_NAME", "Sheet1")
range_name = f"{sheet_name}!A1:Z100"
service = build_sheets_service()
result = service.spreadsheets().values().get(
spreadsheetId=spreadsheet_id,
range=range_name,
).execute()
for row in result.get("values", []):
print(row)最終行に追記する
# scripts/sheets_append.py
import os
from datetime import datetime
from dotenv import load_dotenv
from sheets_client import build_sheets_service
load_dotenv()
spreadsheet_id = os.environ["SPREADSHEET_ID"]
sheet_name = os.environ.get("SHEET_NAME", "Sheet1")
values = [[
datetime.now().isoformat(timespec="seconds"),
"Codex/Claude Codeから追記",
"done",
]]
service = build_sheets_service()
service.spreadsheets().values().append(
spreadsheetId=spreadsheet_id,
range=f"{sheet_name}!A:C",
valueInputOption="USER_ENTERED",
insertDataOption="INSERT_ROWS",
body={"values": values},
).execute()
print("appended")指定セルを更新する
# scripts/sheets_update.py
import os
from dotenv import load_dotenv
from sheets_client import build_sheets_service
load_dotenv()
spreadsheet_id = os.environ["SPREADSHEET_ID"]
sheet_name = os.environ.get("SHEET_NAME", "Sheet1")
service = build_sheets_service()
service.spreadsheets().values().update(
spreadsheetId=spreadsheet_id,
range=f"{sheet_name}!D2",
valueInputOption="USER_ENTERED",
body={"values": [["更新済み"]]},
).execute()
print("updated")ターミナルから実行する
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python scripts/sheets_read.py
python scripts/sheets_append.py
python scripts/sheets_update.pyここまでできれば、CodexやClaude Codeに「scripts/sheets_append.pyを修正して、CSVの内容をシートへ追記して」と依頼できます。AIが実行するのは通常のターミナルコマンドなので、再現性が高くなります。
Workspaceでサービスアカウント共有が拒否される理由
Google Workspace側から見ると、サービスアカウントは通常の社内ユーザーではありません。共有相手のメールアドレスはiam.gserviceaccount.comなどの外部ドメインに見えるため、DriveやDocsの外部共有制限に引っかかることがあります。
Google Workspace管理者は、Drive、Docs、Sheets、Slidesの外部共有をオフにしたり、許可したドメインだけに制限したりできます。この場合、社内のユーザーがスプレッドシートの共有画面でサービスアカウントを追加しようとしても、組織ポリシーでブロックされます。
特に重要:Google Workspaceの信頼済みドメイン設定では、Googleサービスアカウントのドメイン、つまりgserviceaccount.comを信頼済みドメインとして使えないと案内されています。つまり「サービスアカウントのドメインを許可リストに入れれば解決」とは限りません。
| 症状 | 原因 | 対応 |
|---|---|---|
| サービスアカウントに共有できない | 外部共有がオフ、または許可ドメイン制限 | 管理者に確認。別方式を検討 |
| 共有できたがAPIで404/権限エラーになる | シートID違い、権限不足、共有先メールアドレス違い | サービスアカウントのメールと権限を確認 |
| 共有ドライブ上のファイルだけ読めない | 共有ドライブ側の外部メンバー制限やDrive API設定 | 共有ドライブの管理者設定を確認 |
| 組織ルール上、外部共有が絶対に不可 | 情報漏えい防止ポリシー | ドメインワイドデリゲーション、OAuth、Apps Scriptを検討 |
外部共有が許可されない場合の現実的な代替案
代替案1:ドメインワイドデリゲーションで社内ユーザーとして操作する
Google Workspaceの組織内で本格的に運用するなら、ドメインワイドデリゲーションが正攻法になります。これは、サービスアカウントに対して「特定のGoogle WorkspaceユーザーとしてAPIを呼ぶ権限」を管理者が付与する仕組みです。
この方式では、シートをサービスアカウントに外部共有するのではなく、社内ユーザーが持っている権限でAPIを呼びます。たとえばsheets-bot@example.comのような社内ユーザーを用意し、そのユーザーにシートの編集権限を付け、サービスアカウントはそのユーザーを代理実行します。
# scripts/sheets_client_dwd.py
import os
from google.oauth2 import service_account
from googleapiclient.discovery import build
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
def build_sheets_service():
credentials = service_account.Credentials.from_service_account_file(
os.environ["GOOGLE_APPLICATION_CREDENTIALS"],
scopes=SCOPES,
)
delegated_credentials = credentials.with_subject(
os.environ["GOOGLE_IMPERSONATE_USER"]
)
return build("sheets", "v4", credentials=delegated_credentials).envには次のように書きます。
GOOGLE_APPLICATION_CREDENTIALS=/Users/yourname/.config/google-service-accounts/sheets-bot.json
GOOGLE_IMPERSONATE_USER=sheets-bot@example.com
SPREADSHEET_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SHEET_NAME=Sheet1ただし、ドメインワイドデリゲーションは非常に強い権限です。Googleの管理者ヘルプでも、必要なスコープを確認し、アクセス範囲を小さくし、不要になったサービスアカウントを定期的に見直すことが推奨されています。
代替案2:OAuthで本人アカウントとして操作する
管理者にドメインワイドデリゲーションを依頼できない場合、自分のGoogleアカウントでOAuth認証して操作する方法があります。この方式なら、APIは「自分がアクセスできるシート」を操作します。
ローカル開発では使いやすい一方、初回にブラウザ認証が必要で、CIやチーム共通の自動化には向きにくいです。また、Workspace側で未確認OAuthアプリや外部アプリの利用が制限されていると、管理者承認が必要になることがあります。
OAuth方式の具体的な手順
OAuth方式では、サービスアカウントのメールアドレスをシートに共有する必要はありません。自分のGoogleアカウントでブラウザ認証し、そのユーザーがアクセスできる非公開シートをAPIで操作します。
- Google Cloud Consoleでプロジェクトを作成する
- Google Sheets APIを有効化する
- OAuth同意画面を設定する
- OAuthクライアントIDを作成し、種類は「デスクトップアプリ」を選ぶ
- ダウンロードしたJSONを
credentials.jsonとして保存する - 初回実行時にブラウザでGoogleログインして許可する
- 生成された
token.jsonを使って2回目以降は自動認証する
この方式で必要なファイル構成は次のようになります。
my-project/
scripts/
sheets_oauth_client.py
sheets_oauth_read.py
sheets_oauth_append.py
credentials.json
token.json
.gitignorecredentials.jsonとtoken.jsonはどちらも機密情報です。必ず.gitignoreに入れてください。
credentials.json
token.json
.env
secrets/
.claude/settings.local.jsonOAuth用の共通クライアント
Google公式クイックスタートと同じ考え方で、初回はブラウザ認証し、2回目以降はtoken.jsonを再利用します。
# scripts/sheets_oauth_client.py
import os
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
def build_sheets_service():
credentials = None
token_path = os.environ.get("GOOGLE_OAUTH_TOKEN", "token.json")
client_secret_path = os.environ.get("GOOGLE_OAUTH_CLIENT_SECRET", "credentials.json")
if os.path.exists(token_path):
credentials = Credentials.from_authorized_user_file(token_path, SCOPES)
if not credentials or not credentials.valid:
if credentials and credentials.expired and credentials.refresh_token:
credentials.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
client_secret_path,
SCOPES,
)
credentials = flow.run_local_server(port=0)
with open(token_path, "w", encoding="utf-8") as token_file:
token_file.write(credentials.to_json())
return build("sheets", "v4", credentials=credentials)このコードを使うには、google-auth-oauthlibも追加します。
google-api-python-client==2.*
google-auth==2.*
google-auth-oauthlib==1.*
python-dotenv==1.*OAuthで非公開シートを読む
# scripts/sheets_oauth_read.py
import os
from dotenv import load_dotenv
from sheets_oauth_client import build_sheets_service
load_dotenv()
spreadsheet_id = os.environ["SPREADSHEET_ID"]
sheet_name = os.environ.get("SHEET_NAME", "Sheet1")
service = build_sheets_service()
result = service.spreadsheets().values().get(
spreadsheetId=spreadsheet_id,
range=f"{sheet_name}!A1:Z100",
).execute()
for row in result.get("values", []):
print(row)OAuthで追記する
# scripts/sheets_oauth_append.py
import os
from datetime import datetime
from dotenv import load_dotenv
from sheets_oauth_client import build_sheets_service
load_dotenv()
spreadsheet_id = os.environ["SPREADSHEET_ID"]
sheet_name = os.environ.get("SHEET_NAME", "Sheet1")
service = build_sheets_service()
service.spreadsheets().values().append(
spreadsheetId=spreadsheet_id,
range=f"{sheet_name}!A:C",
valueInputOption="USER_ENTERED",
insertDataOption="INSERT_ROWS",
body={
"values": [[
datetime.now().isoformat(timespec="seconds"),
"OAuthユーザーとして追記",
"done",
]]
},
).execute()
print("appended by OAuth user")OAuth方式をCodexやClaude Codeで使うときの注意
OAuth方式では、初回だけブラウザ認証が必要です。CodexやClaude Codeのターミナルから実行するとローカルブラウザが開くため、まず人間が一度だけ次のコマンドを実行してtoken.jsonを作るのがおすすめです。
python scripts/sheets_oauth_read.pyその後、CodexやClaude Codeにはtoken.jsonの中身を読ませず、スクリプト実行だけを許可します。Claude Codeなら、次のように読み取り拒否を設定しておくと安全です。
{
"permissions": {
"deny": [
"Read(./credentials.json)",
"Read(./token.json)",
"Read(./secrets/**)"
],
"ask": [
"Bash(python scripts/sheets_oauth_append.py:*)"
]
}
}OAuth方式の良いところは、Workspaceの外部共有制限に引っかかりにくい点です。一方で、token.jsonは実質的に本人のGoogleアカウントでAPIを使うための認証情報です。共有PC、CI、リポジトリ、AIが読める場所には置かないでください。
代替案3:専用のWorkspaceユーザーを作る
組織によっては、automation@example.comのような専用ユーザーを作り、そのユーザーでOAuth認証する方が現実的な場合もあります。社内ユーザーなので外部共有の問題を避けやすい一方、ライセンス費用、パスワード管理、多要素認証、退職者管理とは別の運用ルールが必要です。
代替案4:Google Apps Scriptをシート側に置く
外部から直接Sheets APIを叩かせたくない場合は、スプレッドシートに紐づくGoogle Apps Scriptを窓口にする方法もあります。GASはGoogle Workspace内で動くため、組織ポリシーとの相性が良いケースがあります。
たとえば、CodexやClaude CodeがローカルでCSVを作り、その内容を社内で許可されたWebアプリURLへPOSTし、GAS側でシートに追記する構成です。ただし、Webアプリ公開範囲、認証、署名検証、レート制限、ログ管理は別途設計する必要があります。
Claude Codeで使うときの設定例
Claude Codeはターミナルコマンドの実行、ファイル編集、MCP連携、環境変数設定に対応しています。Google Sheets操作では、認証JSONをプロジェクトに置かず、Claude Codeの設定で機密ファイルを読ませないようにするのが重要です。
プロジェクトの.claude/settings.local.jsonに、個人環境用の環境変数と読み取り拒否を置く例です。このファイルはGitにコミットしません。
{
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/Users/yourname/.config/google-service-accounts/sheets-bot.json",
"SPREADSHEET_ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"SHEET_NAME": "Sheet1"
},
"permissions": {
"deny": [
"Read(./.env)",
"Read(./secrets/**)",
"Read(/Users/yourname/.config/google-service-accounts/**)"
],
"ask": [
"Bash(python scripts/sheets_update.py:*)",
"Bash(python scripts/sheets_append.py:*)"
]
}
}これで、Claude Codeには「認証情報の中身を読ませず、スクリプト実行だけを許可する」形を作りやすくなります。もちろん、エージェントに実行権限を与える時点でシート更新は可能になるため、更新系コマンドは確認制にするのが安全です。
Codexで使うときの考え方
Codexでも考え方は同じです。認証情報をコードベースに入れず、環境変数でパスやシートIDを渡し、AIにはスクリプトを編集・実行させます。
たとえば、作業開始時に次のように伝えると実務で扱いやすくなります。
このリポジトリでは scripts/sheets_*.py だけを使ってGoogle Sheetsを操作してください。
認証情報JSONの中身は読まないでください。
読み取りは scripts/sheets_read.py、追記は scripts/sheets_append.py、更新は scripts/sheets_update.py を使います。
本番シートへ書き込む前に、必ず対象範囲と変更内容を表示してください。CodexやClaude Codeに直接「このシートを更新して」とだけ依頼すると、どの行を更新するか、既存データを壊さないか、認証情報をどう扱うかが曖昧になります。コマンドと対象範囲をスクリプト化しておくことで、事故をかなり減らせます。
MCPサーバー化する場合
毎回スクリプトを直接実行するだけでも十分ですが、頻繁に使うならMCPサーバーとしてラップする方法もあります。MCPにすると、AIエージェントが「シートを読む」「行を検索する」「行を追記する」といったツールとして扱いやすくなります。
ただし、MCP化するとAIからの実行ハードルが下がります。便利な反面、誤更新も起きやすくなるため、最初は読み取り専用ツールから始めるのがおすすめです。
| 段階 | 公開するツール | 安全性 |
|---|---|---|
| ステップ1 | read_sheet、find_rows | 読み取り専用で始める |
| ステップ2 | append_row | 追記だけ許可。既存行は壊しにくい |
| ステップ3 | update_cells、delete_rows | 人間確認、バックアップ、ログが必須 |
MCP化の目安:まずPythonスクリプトで読み書きできる状態を作り、運用が固まってからMCPにする方が失敗しにくいです。最初からMCP化すると、認証・権限・データ設計・AIツール設計を同時に考えることになります。
安全に運用するためのルール
AIエージェントに非公開スプレッドシートを触らせる場合、通常のAPI連携よりも運用ルールが重要です。AIは便利ですが、曖昧な指示で大量更新を実行できてしまうからです。
- 認証JSONをGitに入れない
- 認証JSONをAIに読ませない設定にする
- 最初は読み取り専用スコープから始める
- 更新系スクリプトは実行前に対象行と変更内容を表示する
- 本番シートとは別に検証用シートを作る
- 削除処理は原則作らず、ステータス更新で代替する
- 更新ログ用のシートを用意する
- 定期実行する場合はサービスアカウントキーの管理とローテーションを決める
- Workspace管理者と、外部共有・OAuthアプリ・ドメインワイドデリゲーションの方針を確認する
特に、ドメインワイドデリゲーションは強力です。実装コード側で代理実行するユーザーを固定し、スコープをspreadsheetsに絞り、不要なDrive全体権限を足さないようにしましょう。
よくあるエラーと対処
| エラー/症状 | よくある原因 | 確認すること |
|---|---|---|
| 404 Not Found | シートID違い、または認証主体に権限がない | URLの/d/以降のID、共有先メール、対象シート |
| 403 Permission denied | 閲覧権限しかない、APIスコープ不足、Workspaceポリシー | 共有権限、spreadsheetsスコープ、管理者設定 |
| 共有画面でサービスアカウントを追加できない | 外部共有制限、許可ドメイン制限、信頼ルール | Drive and Docsの共有設定、信頼済みドメイン、管理者ポリシー |
| OAuth consentが通らない | 組織が外部/未確認アプリをブロック | Google AdminのAPI controls、アプリの信頼設定 |
| ドメインワイドデリゲーションで認証失敗 | Client ID違い、スコープ未承認、代理ユーザー指定ミス | Admin ConsoleのDomain Wide Delegation、with_subject、対象ユーザー |
実務でおすすめの構成
個人や小規模チームなら、サービスアカウント共有で十分なことが多いです。ただし、Google Workspaceのセキュリティ設定が厳しい会社では、サービスアカウント共有は外部共有として止められる前提で考えた方が安全です。
| 状況 | おすすめ構成 |
|---|---|
| 個人のGoogleアカウントで使う | サービスアカウント共有、またはOAuth |
| 外部共有が許可された小規模Workspace | サービスアカウント共有 + 最小スコープ |
| 外部共有が禁止されたWorkspace | ドメインワイドデリゲーション、専用Workspaceユーザー、Apps Script |
| 本番業務で定期更新する | 専用実行ユーザー + 監査ログ + 検証用シート + 更新前確認 |
| AIから頻繁に参照する | 読み取り専用MCPまたは読み取り専用スクリプト |
まとめ:非公開シートは公開せずに操作できるが、認証設計が本体
CodexやClaude Codeのターミナルから、非公開のGoogleスプレッドシートを操作することは可能です。基本は、Google Sheets APIを呼ぶスクリプトをコードベースに用意し、AIエージェントにそのスクリプトを実行させる形です。
最初に試すなら、サービスアカウントを作り、対象シートだけに共有し、読み取り・追記・更新スクリプトを分けるのがわかりやすいです。ただし、Google Workspaceではサービスアカウントが外部アカウント扱いになり、共有ポリシーで拒否されることがあります。
その場合は、管理者承認のもとでドメインワイドデリゲーションを使う、OAuthで本人として操作する、専用Workspaceユーザーを用意する、Apps Scriptを窓口にする、といった代替案を検討しましょう。重要なのは、シートを全体公開しないことではなく、誰の権限で、どの範囲を、どのコマンドで操作するかを明確にすることです。
参考情報
- Google Sheets API Python Quickstart
- Google Sheets API:spreadsheets.values.get
- Google Sheets API:spreadsheets.values.append
- Google Workspace:Create access credentials
- Google Identity:OAuth 2.0 overview
- Google Workspace Admin Help:Manage external sharing for your organization
- Google Workspace Admin Help:Allow external sharing with only trusted domains
- Google Workspace Admin Help:Control API access with domain-wide delegation
- Anthropic Docs:Claude Code settings
- Anthropic Docs:Connect Claude Code to tools via MCP
Google Workspaceの共有設定やAPI制限は組織ごとに異なります。この記事のコードを本番シートで使う前に、検証用シートで動作確認し、管理者ポリシーに沿って運用してください。


