公開日: 最終更新:
執筆・編集:株式会社Nexa 編集部(下書きと機械検査はAI、公開前に人が確認)/約27分で読めます。公式ドキュメント・公式発表などの一次情報を確認したうえで執筆・更新しています。AIツールの仕様や料金は変わることがあるため、導入判断の前に各公式サイトの最新情報もご確認ください。記事の作り方と検査の方針
claspとClaude Codeを組み合わせると、GAS(Google Apps Script)のコード作成からpush・デプロイまでをターミナルで進められます。連携の方法は「Claude Codeにclaspのコマンドを実行させる」「claspをMCPサーバーとして登録する」の2つです(2026年9月29日確認)。
- 要点1: claspはGitHubのgoogle組織が公開しているオープンソースのCLI。最新版は3.4.1(2026年8月28日)で、Node.js 20以上が必要。3.2.0からClaude Code向けの設定が同梱されている
- 要点2:
clasp runが動かない主な原因は設定不足。Google Cloudプロジェクトの紐づけ、OAuthクライアントの作成、API Executableとしてのデプロイが必要 - 要点3: ウェブアプリの公開範囲が「自分のみ」(MYSELF)の場合、認証情報のないcurlでは実行できない。ブラウザでログインして開く
- 要点4: 定期実行はトリガーで行う。トリガーはApps Script API経由(
clasp run)では作成できないため、エディタで設定用の関数を1回実行する
対象: GASをより効率的に管理・自動化したい開発者・DX推進担当者
今日やること: npm install -g @google/clasp でclaspをインストールし、Apps Script APIをオンにしてから、既存のGASプロジェクトをクローンしてみる
claspをClaude Codeから使う方法は2つあります。1つは、Claude Codeにターミナルでclasp pushなどのコマンドを実行させる方法。もう1つは、claspをMCPサーバーとしてClaude Codeに登録する方法です。どちらも、GASのコードをローカルのファイルとして扱えるようにするclaspが土台になります。
「GASを使いたいがオンラインエディタだと管理が大変」「Claude Codeと連携してGASの業務自動化を進めたい」——こうした課題は、claspの導入で解消しやすくなります。
この記事では、claspの導入からClaude Codeとの連携、関数の実行方法、定期実行の設定までを、Googleの公式ドキュメントとclaspの公式リポジトリの内容に沿って解説します。clasp runが動かないときの設定と、ウェブアプリで実行する場合の公開範囲の注意点も扱います。
clasp(クラスプ)とは?GASをローカルで管理できるCLIツール
clasp(Command Line Apps Script Projects)とは、Google Apps ScriptのプロジェクトをローカルのPCで開発・管理するためのCLIツールです。GitHubのgoogle組織がオープンソースとして公開しており、Apps Scriptの公式ドキュメントにも使い方のガイドがあります。一方で、リポジトリのREADMEには「Googleが公式にサポートする製品ではない」と明記されています。
2026年9月29日時点の最新版は3.4.1(2026年8月28日公開)です。GASはブラウザ上のエディタで編集するのが基本ですが、claspを使えばVS Codeなどのローカルエディタで開発して、clasp pushコマンドで反映できます。
仕組みは単純です。Claude Codeがローカルのファイルを編集し、claspがそのファイルをApps Script API経由でGoogle側のプロジェクトへ送ります。逆向きのclasp pullで、Google側のコードをローカルへ取り込めます。

claspが解決する3つの問題
| 課題 | GASオンラインエディタ | clasp導入後 |
|---|---|---|
| バージョン管理 | エディタ内の版の管理のみ(Gitは使えない) | Gitで差分を管理できる |
| チーム開発 | 同じエディタを共有して編集する | 各自のローカルで開発し、Gitでまとめる |
| Claude Code連携 | ブラウザ操作が必要 | CLIなのでClaude Codeから実行できる |
特にClaude Codeとの相性が良い点が重要です。Claude Codeはターミナルコマンドを実行できるため、claspのコマンドを呼び出してGASへの反映やデプロイまで進められます。
claspでできること・できないこと
できること:
- GASプロジェクトの作成とクローン(
clasp create-script、clasp clone-script) - ローカルで編集したコードをGASへ反映する(
clasp push)、GAS側のコードを取り込む(clasp pull) - バージョンとデプロイの作成・更新・一覧(
clasp create-deployment、clasp update-deployment、clasp list-deployments) - ウェブアプリとしてデプロイし、そのURLを取得する(
clasp open-web-app) - MCPサーバーとして動かし、Claude Codeなどのエージェントから使う(
clasp mcp、試験的な機能)
追加の設定が必要なこと・できないこと:
clasp run-function(別名clasp run)で関数を実行するには、Google Cloudプロジェクトの紐づけ、OAuthクライアントの作成、API Executableとしてのデプロイが必要clasp tail-logs(別名clasp logs)でログを読むには、Google CloudプロジェクトのIDの設定が必要。表示されるのはconsole.logの出力で、Logger.logの出力は対象外- トリガー(定期実行の設定)を管理するコマンドは無い。トリガーはGASのコードかエディタの画面で作る
clasp 3.xで変わった点
clasp 3.xでは、コマンド名がclone-scriptやcreate-deploymentのような形に整理されました。clone・deploy・run・logsといった従来の名前も別名として残っているため、古い記事のコマンドの多くはそのまま動きます。この記事では3.xの正式な名前で書きます。
変更の影響が大きいのは次の2点です。
- TypeScriptの変換をしなくなった: 3.xはTypeScriptをJavaScriptへ変換しません。TypeScriptで書く場合は、Rollupなどのバンドラーで変換してからpushします
- 一部のコマンドが置き換わった:
clasp openはclasp open-scriptに、clasp open --webはclasp open-web-appに、clasp deploy -i <ID>はclasp update-deployment <ID>に変わっています
claspのインストールと初期設定手順
claspはNode.jsのnpmパッケージとして配布されています。
前提条件の確認
node -v # v20以上が必要
Apps Scriptの公式ガイドとnpmパッケージの指定は「Node.js 20.0.0以上」です。READMEのトラブルシューティングには22以上と書かれているため、新しく入れる場合は22以上を選ぶと確実です。Node.jsがインストールされていない場合は、公式サイト(nodejs.org)からインストールしてください。
claspのインストールとログイン
# グローバルインストール
npm install -g @google/clasp
# バージョン確認
clasp --version
# Googleアカウントで認証
clasp login
インストール後、ブラウザで https://script.google.com/home/usersettings を開き、「Google Apps Script API」をオンにします。オフのままだと、claspからプロジェクトを操作できません。
clasp loginを実行すると、ブラウザが開きGoogleアカウントの認可画面が表示されます。GASを使っているGoogleアカウントでログインしてください。ブラウザでの操作が必要なので、ログインはClaude Codeに任せず、自分でターミナルから実行します。
ポイントログインすると、認証情報がホームディレクトリの
.clasprc.jsonに保存されます。アクセストークンの有効期限は短いものの、保存された更新用のトークンで自動的に更新されます。このファイルと、後述のclient_secret.jsonは、Gitのリポジトリに入れないでください。
GASプロジェクトのクローン
既存のGASプロジェクトをローカルに取得するには、スクリプトIDが必要です。スクリプトIDは、GASエディタの左側にある「プロジェクトの設定」で確認できます。エディタのURLをそのまま指定することもできます。
# 新しいディレクトリを作成してクローン
mkdir my-gas-project && cd my-gas-project
clasp clone-script "スクリプトID"
クローンに成功すると、ローカルに以下のファイルが生成されます。
.clasp.json— スクリプトIDなどの設定ファイルappsscript.json— GASプロジェクトの設定(タイムゾーン、ランタイムなど)Code.jsなど — GASのスクリプトファイル(GAS側の.gsは、ローカルでは.jsとして保存される)
Claude CodeとclaspでGASの開発ワークフローを構築する
claspのセットアップが完了したら、Claude Codeとの連携ワークフローを構築します。連携の方法は2つあります。
方法1: Claude Codeにclaspのコマンドを実行させる
クローンしたディレクトリでClaude Codeを起動し、コードの編集からpushまでを依頼する方法です。追加の設定が不要で、デプロイまで扱えるため、まずはこの方法から始めるのが分かりやすいです。
# ローカルのコードをGASにアップロード
clasp push
# バージョンを作成してデプロイ(ウェブアプリなどとして公開する場合)
clasp create-deployment --description "v1.0 初回デプロイ"
# デプロイIDの一覧を確認
clasp list-deployments
# 既存のデプロイを新しいバージョンに更新
clasp update-deployment "デプロイID" --description "v1.1 バグ修正"
Claude Codeに実行させるときは、次の3点に注意してください。
- pushはプロジェクト全体を置き換える:
clasp pushは、オンライン側の内容をローカルのファイルで丸ごと置き換えます。オンラインエディタで直接編集した場合は、先にclasp pullで取り込みます - appsscript.jsonを変えたときは–forceを付ける: 設定ファイルを変更してpushすると、claspは上書きの確認を求めます。Claude Codeのように確認に答えられない環境では、pushが見送られて「Skipping push.」と表示されます。内容を確認したうえで
clasp push --forceを使います - デプロイの前に確認を挟む: デプロイと本番の実行は影響が大きいため、Claude Codeには「デプロイの前に変更点を見せて確認を取る」と指示しておくと安全です
方法2: claspをMCPサーバーとして登録する
clasp 3.2.0(2026年2月)で、Claude Code向けの設定がリポジトリに加わりました。次のコマンドで、claspをMCPサーバーとしてClaude Codeに登録できます。
claude mcp add clasp -- npx -y @google/clasp mcp
登録すると、Claude Codeから次の5つの操作を道具として呼び出せます。認証は通常のclaspと共通なので、先にclasp loginを済ませておきます。
- ファイルの反映(push)と取り込み(pull)
- プロジェクトの作成とクローン
- プロジェクトの一覧
READMEはこの機能を「試験的」としており、使える操作は一部に限られます。デプロイや関数の実行は含まれないため、それらは方法1のコマンドで行います。READMEにはプラグインとして入れる方法も載っていますが、ここではClaude Codeの公式ドキュメントに書式があるclaude mcp addを示しました。
Claude Codeがコードを自動生成してclaspでpushする実例
ある企業では、Google Meetの録画ファイルをGoogle Driveの指定フォルダに自動整理するGASを、Claude Codeを使って以下の流れで構築しました。
- Claude Codeに「Driveの録画ファイルを日付フォルダに整理するGASを書いて」と依頼
- Claude Codeがローカルの
Code.jsにコードを生成 clasp pushでGASに反映- GASエディタで動作を確認する(後述の方法でも確認できる)
この記事では、この処理を次のコードで説明します。後の章のコード例は、すべてこの関数を呼び出します。
// Code.js
// 整理元フォルダのIDは、スクリプト プロパティ SOURCE_FOLDER_ID に保存しておく
function organizeAllMeetFiles(dryRun) {
const folderId = PropertiesService.getScriptProperties().getProperty('SOURCE_FOLDER_ID');
if (!folderId) {
throw new Error('スクリプト プロパティ SOURCE_FOLDER_ID が未設定です');
}
const source = DriveApp.getFolderById(folderId);
// 先に対象のファイルを集める
const targets = [];
const files = source.getFiles();
while (files.hasNext()) {
targets.push(files.next());
}
const timeZone = Session.getScriptTimeZone();
const result = [];
targets.forEach(file => {
const folderName = Utilities.formatDate(file.getDateCreated(), timeZone, 'yyyy-MM-dd');
result.push({ file: file.getName(), to: folderName });
if (dryRun === true) {
return; // 確認だけのときは移動しない
}
const found = source.getFoldersByName(folderName);
const target = found.hasNext() ? found.next() : source.createFolder(folderName);
file.moveTo(target);
});
return result;
}
引数にtrueを渡すと、ファイルは動かさずに「どのファイルをどのフォルダへ移すか」の一覧だけを返します。
appsscript.jsonの管理
appsscript.jsonはGASプロジェクトの重要な設定ファイルです。タイムゾーンの設定が誤っていると、定期実行トリガーが想定外の時刻に動作します。
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
timeZoneが"Asia/Tokyo"になっているかを確認してください。たとえば"America/New_York"のままだと、定期実行の時刻が日本時間と13〜14時間ずれます。
【重要】clasp runが動かない原因と設定 — Web Appで実行する場合の公開範囲
claspを使い始めてつまずきやすいのが、pushしたあとの関数の実行です。方法は3つあり、事前の設定と、実行できる人が異なります。
| 方法 | 事前の設定 | Claude Codeからの実行 | 向いている用途 |
|---|---|---|---|
| clasp run | 多い(Google Cloudの設定が必要) | できる | 関数を繰り返し試す |
| ウェブアプリ(公開範囲は自分のみ) | 少ない(設定ファイルに追記) | できない(ブラウザで開く) | 結果をブラウザで確認する |
| エディタで実行 | なし | できない(ブラウザで操作) | 初回の承認とトリガーの作成 |
Claude Codeから直接実行できるのはclasp runだけで、残りの2つはブラウザでの操作が必要です。

clasp runが動かない原因と必要な設定
clasp run-function(別名clasp run)は、Apps Script APIを通じて関数を実行します。claspの公式ドキュメントが挙げる準備は次のとおりです。
- 標準のGoogle Cloudプロジェクトを用意し、GASエディタの「プロジェクトの設定」でプロジェクト番号を紐づける。
.clasp.jsonにprojectIdを追加する - Google CloudでOAuthクライアント(種類はデスクトップ アプリ)を作成し、
client_secret.jsonとしてダウンロードする - Google Cloudプロジェクトで「Apps Script API」を有効にする
appsscript.jsonに、スクリプトが使うスコープ(oauthScopes)とexecutionApiの設定を書いてpushするclasp login --user runner --use-project-scopes --creds client_secret.jsonでログインする(runnerは任意の名前)- GASエディタの「デプロイ」→「新しいデプロイ」で、種類にAPI Executable(APIから実行できる形式)を選んでデプロイする
手順4のexecutionApiは、APIから実行できる人の範囲を決める設定です。claspの公式ドキュメントは次の例を載せています。指定できる値は、後述するウェブアプリの公開範囲と同じ4種類なので、実行する人に合わせて、できるだけ狭い範囲を選んでください。
"executionApi": {
"access": "ANYONE"
}
設定が済めば、次のように関数を実行できます。引数はJSONの配列で渡します。
# 確認だけ(ファイルは動かさない)
clasp run-function --user runner organizeAllMeetFiles -p '[true]'
# 本番実行
clasp run-function --user runner organizeAllMeetFiles -p '[false]'
「Script API executable not published/deployed.」というエラーが出る場合は、手順6のデプロイができていません。
Apps Script APIには制限もあります。Googleの公式ドキュメントによると、受け渡しできるのは文字列・数値・配列などの基本的な型だけで、トリガーの作成はできません。サービスアカウントでも使えません。
手順は多いものの、設定は最初の1回だけです。実行できるのは認可を受けたユーザーに限られるため、Claude Codeから関数を繰り返し実行したい場合は、この方法が向いています。
ウェブアプリの公開範囲は4種類ある
もう1つの方法が、GASをウェブアプリとしてデプロイする方法です。ここで重要なのが公開範囲(access)です。Googleの公式ドキュメントは、次の4つの値を定めています。
| accessの値 | 実行できる人 | 認証情報のないcurl |
|---|---|---|
| MYSELF | デプロイしたユーザーのみ | 実行できない |
| DOMAIN | デプロイした人と同じドメインのユーザー | 実行できない |
| ANYONE | Googleアカウントでログインしている人 | 実行できない |
| ANYONE_ANONYMOUS | ログインしていない人を含む全員 | 実行できる |
上の3つは、Googleアカウントでのログインが前提です。認証情報を付けずにcurlでURLを呼び出しても、誰のアクセスかを確認できないため、関数は実行されません。
ウェブアプリ(公開範囲は自分のみ)で結果を確認する手順
ここでは、公開範囲を自分のみにしたウェブアプリで、整理の対象を確認する例を示します。
Step 1: doGet関数を追加する
// Code.js に追加
function doGet(e) {
if (e.parameter.action === 'dryRun') {
// 確認だけ。ファイルは動かさない
return toJson({ status: 'OK', result: organizeAllMeetFiles(true) });
}
return toJson({ status: 'error', message: 'Unknown action' });
}
function toJson(data) {
return ContentService.createTextOutput(JSON.stringify(data))
.setMimeType(ContentService.MimeType.JSON);
}
ウェブアプリは、URLを開くだけで処理が動きます。そのため、この例ではファイルを動かさない確認だけを受け付けています。ファイルの移動のように変更を伴う処理は、後述のトリガーかエディタから実行します。
Step 2: appsscript.jsonにウェブアプリの設定を追加する
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"webapp": {
"executeAs": "USER_DEPLOYING",
"access": "MYSELF"
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
Step 3: claspでpushしてデプロイする
clasp push --force
clasp create-deployment --description "Web App v1.0"
デプロイが完了すると「Deployed デプロイID @バージョン番号」と表示されます。ウェブアプリのURLは表示されないため、次のコマンドで確認します。
clasp open-web-app "デプロイID"
自分のターミナルから実行するとブラウザが開きます。Claude Codeのように、端末に直接つながっていない環境から実行した場合は、ブラウザは開かず、開くべきURLが表示されます。
Step 4: デプロイした本人がブラウザで開く
デプロイに使ったGoogleアカウントでログインしたブラウザで、URLの末尾に?action=dryRunを付けて開きます。初回は権限の承認を求められることがあります。承認すると、整理の対象になるファイルの一覧がJSONで表示されます。
実務での活用ポイント: コードを更新したら、
clasp pushのあとにclasp update-deployment "デプロイID"で同じデプロイを更新します。claspのREADMEによると、ウェブアプリのURLはデプロイごとに決まるため、同じデプロイを更新すればURLは変わりません。
公開範囲を全員にしてcurlで呼び出す場合の危険
公開範囲をANYONE_ANONYMOUSにすると、認証情報のないcurlでも呼び出せます。Googleの公式ドキュメントによると、応答は別のURLへ転送されるため、curlには-Lを付けます。
curl -L "ウェブアプリのURL?action=dryRun"
ただし、この設定は次の危険を伴うため、業務データを扱う処理には勧められません。
- URLを知っている人は、ログインなしで誰でも、何度でも実行できる
executeAsがUSER_DEPLOYINGの場合、処理はデプロイした人の権限で動く。第三者が、その人の権限でDriveやGmailを操作する処理を動かせることになる- URLは、コマンドの履歴・ログ・チャットなどに残りやすく、漏れても気づきにくい
外部のサービスから通知を受け取る場合など、どうしても必要なときは、処理を読み取りだけに絞る、合言葉になる値をスクリプト プロパティに保存して照合する、不要になったデプロイはclasp delete-deploymentで取り消す、といった対策を組み合わせてください。Claude Codeから自分の関数を実行したいだけなら、clasp run-functionを使うほうが安全です。
AI導入に関するお困りごとは、株式会社NexaのAI顧問がサポートします。「何から始めればいいか分からない」という段階からご相談いただけます。
GASのトリガー設定 — Claude Codeで書いた処理を定期実行する
GASには、Google側のサーバーで処理を定期実行するトリガー機能があります。Googleのサービスを操作する処理であれば、GitHub Actionsで組むよりも準備が少なく済みます。
GASトリガーとGitHub Actionsの比較
| 項目 | GASトリガー | GitHub Actions |
|---|---|---|
| セットアップ | 設定用の関数を1回実行する(画面からも作れる) | ワークフローの作成と、Secretsへの認証情報の登録 |
| Googleの認証 | トリガーを作成した人のアカウントで動く | 認証情報を自分で用意して管理する |
| 実行時刻 | 指定した時間帯の中で決まる(9時なら9〜10時の間) | 混雑時は遅れることがある |
| 主な制限 | 1回の実行は6分まで。トリガーの合計実行時間は1日90分(Google Workspaceは6時間) | 最短の間隔は5分。公開リポジトリは60日間動きがないと定期実行が止まる |
| コスト | 無料(上の制限の範囲内) | GitHub Freeは月2,000分まで無料。公開リポジトリの標準ランナーは無料 |
Googleのサービスだけで完結する処理は、GASのトリガーで足ります。GitHub Actionsを選ぶのは、テストやデプロイなど他のワークフローとまとめて管理したい場合です。
GASトリガーを設定する関数を作成する
トリガーを作る関数と、トリガーから呼ばれる関数をGASに追加します。
// Code.js に追加
function setupDailyTrigger() {
const handler = 'runDailyOrganize';
// 同じ関数を呼ぶ既存のトリガーだけを削除(重複防止)
ScriptApp.getProjectTriggers()
.filter(trigger => trigger.getHandlerFunction() === handler)
.forEach(trigger => ScriptApp.deleteTrigger(trigger));
// 毎日9時台に実行するトリガーを作成
ScriptApp.newTrigger(handler)
.timeBased()
.atHour(9)
.everyDays(1)
.create();
console.log('毎日9時台に実行するトリガーを作成しました');
}
// トリガーから呼ばれる関数
function runDailyOrganize() {
const result = organizeAllMeetFiles(false);
console.log(`整理したファイル: ${result.length}件`);
}
トリガーから呼ばれる関数には、引数としてイベントの情報が渡されます。organizeAllMeetFilesを直接呼ばせず、runDailyOrganizeを挟んでいるのはそのためです。
設定用の関数は、GASエディタで1回だけ実行します。Apps Script API経由ではトリガーを作成できないため、clasp run-functionは使えません。
- Claude Codeに上の関数を
Code.jsへ追加させる clasp pushでGASに反映するclasp open-scriptでGASエディタを開く- 関数の一覧から
setupDailyTriggerを選んで実行し、権限を承認する - エディタ左側の「トリガー」に、作成したトリガーが表示されることを確認する
コードを書かずに、エディタ左側の「トリガー」→「トリガーを追加」から作ることもできます。

実務での活用ポイント: 実行の結果は、エディタ左側の「実行数」(英語表示ではExecutions)で確認できます。ステータスで絞り込めば、失敗した実行だけを表示できます。clasp tail-logsで読む場合は、Google CloudプロジェクトのIDの設定が必要です。
実際の業務自動化事例 — claspで管理したGASの活用例
事例1 — Google Meetの録画ファイルを自動整理
課題: Google Meetの録画ファイルがDriveの一か所に貯まり続けて管理が困難になっていました。どのファイルがどの会議のものか判別できない状態でした。
解決方法:
- GASでDriveの録画ファイルを取得し、日付ごとのフォルダへ整理するスクリプトをClaude Codeで生成
- claspでローカル管理し、修正と反映のサイクルをターミナルで進める
- dryRunモードで影響範囲を確認してから本番実行
- GASのトリガーで毎日9時台に自動実行するよう設定
成果: 毎日の録画ファイルの整理を自動化でき、手作業での整理が不要になりました。
事例2 — Slack Webhookとの連携通知
GASはSlackのIncoming WebhookのURLへHTTPリクエストを送信できるため、Googleサービス側の更新をSlackに通知できます。
// Slack通知の基本コード
function sendSlackNotification(message) {
const webhookUrl = PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_URL');
if (!webhookUrl) {
throw new Error('スクリプト プロパティ SLACK_WEBHOOK_URL が未設定です');
}
UrlFetchApp.fetch(webhookUrl, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({ text: message })
});
}
WebhookのURLには秘密の値が含まれます。コードに直接書かず、GASのスクリプト プロパティに保存してください。スクリプト プロパティは、エディタの「プロジェクトの設定」から追加できます。コードをGitHubで管理しても、URLが漏れる危険を避けられます。
なお、Slackの公式ドキュメントによると、Incoming Webhookでは投稿先のチャンネル・表示名・アイコンを上書きできません。表示名を変えたい場合は、Slackアプリ側の設定を変更します。
Claude Codeがこのような通知コードを生成し、claspでpushすることで、Google WorkspaceとSlackを連携する仕組みを素早く構築できます。活用例として、スプレッドシートに新規データが入力された際の通知、定期実行の結果の通知などが挙げられます。
\ AI活用の「次の一手」を一緒に考えませんか /
AI顧問の無料相談はこちらよくある質問
Q. claspとClaude Codeはどのように連携しますか?
方法は2つあります。1つは、Claude Codeにターミナルでclasp pushなどのコマンドを実行させる方法です。もう1つは、claude mcp add clasp -- npx -y @google/clasp mcpでclaspをMCPサーバーとして登録する方法です。MCPの機能は試験的で、使える操作はファイルの反映と取り込み、プロジェクトの作成・クローン・一覧に限られます。
Q. clasp runが動かないのはなぜですか?
多くの場合は設定不足です。clasp run-function(別名clasp run)には、標準のGoogle Cloudプロジェクトの紐づけ、OAuthクライアントの作成とclasp login --credsでのログイン、API Executableとしてのデプロイが必要です。「Script API executable not published/deployed.」と表示される場合は、デプロイができていません。
Q. ウェブアプリのURLをcurlで呼び出すと、ログイン画面のHTMLが返ります。なぜですか?
公開範囲がMYSELF・DOMAIN・ANYONEのウェブアプリは、Googleアカウントでのログインが前提です。認証情報のないcurlでは関数は実行されません。デプロイした本人がブラウザでログインして開くか、clasp run-functionを使ってください。
Q. claspの認証が切れる場合はどう対処すればいいですか?
アクセストークンの有効期限は短いものの、.clasprc.jsonに保存された更新用のトークンで自動的に更新されます。Googleの公式ドキュメントによると、更新用のトークンは、6か月間使われなかった場合や、ユーザーがアクセス権を取り消した場合などに無効になります。
自分で作成したOAuthクライアントを使っていて、同意画面の公開ステータスが「テスト」の場合は、7日で期限が切れます。認証のエラーが出たら、clasp loginを再実行してください。
Q. GASのオンラインエディタとclaspのローカルファイルは同期されますか?
clasp pushでローカル→GAS(オンライン)への反映、clasp pullでGAS→ローカルへの取り込みが行われます。双方向のリアルタイム同期ではありません。
運用上の注意: clasp pushは、オンライン側の内容をローカルのファイルで丸ごと置き換えます。オンラインエディタで直接編集した場合は、ローカルでclasp pullしてから作業を再開してください。
Q. clasp runとウェブアプリはどちらを選ぶべきですか?
用途で選びます。Claude Codeから関数を繰り返し実行したい場合はclasp run-functionが向いています。最初の設定は多いものの、実行できるのは認可を受けたユーザーに限られます。
ウェブアプリは、結果をブラウザで確認したい場合に向いています。公開範囲は自分のみ(MYSELF)を基本にしてください。全員に公開する設定は、URLを知っていれば誰でも実行できるため、業務データを扱う処理には勧められません。
Q. clasp 2.xのコマンドは3.xでも使えますか?
clone・deploy・run・logsなどは別名として残っており、3.xでも使えます。一方、clasp openはclasp open-scriptに、clasp deploy -i <ID>はclasp update-deployment <ID>に変わりました。また、3.xはTypeScriptを変換しないため、TypeScriptで書く場合はバンドラーでの変換が必要です。
Q. Claude Codeからclasp pushを実行すると「Skipping push.」と表示されます。なぜですか?
appsscript.jsonを変更した場合、claspは上書きの確認を求めます。確認に答えられない環境ではpushが見送られ、このメッセージが表示されます。変更の内容を確認したうえで、clasp push --forceを実行してください。
まとめ
Claude CodeとclaspでGASを管理・実行するための要点をまとめます。
- claspのセットアップ:
npm install -g @google/claspでインストールし、Apps Script APIをオンにする。clasp loginで認証し、clasp clone-scriptでプロジェクトを取得する - Claude Codeとの連携: Claude Codeにclaspのコマンドを実行させるか、claspをMCPサーバーとして登録する
- 基本ワークフロー: Claude Codeにコードを書かせる→
clasp pushでGASに反映→clasp create-deploymentでデプロイ - 関数の実行: 繰り返し実行するなら
clasp run-function。ウェブアプリは公開範囲を自分のみにして、ブラウザで確認する - 定期実行: GASのトリガーを使う。設定用の関数は、エディタで1回実行する
claspを導入すると、GASのコードをローカルのファイルとして扱えるようになり、Claude Codeに編集から反映までを任せられます。まずは既存のGASプロジェクトをclaspでクローンして、ローカル開発環境の構築から試してみてください。
また、本記事では社内のGoogle Workspaceとの連携についても触れましたが、GmailやGoogle Driveとの連携については以下の記事も参考にしてください。
- Claude Code × Gmailで受信メールを自動チェック・要約する
- Claude CodeからGoogle Driveを操作してファイル管理を自動化
- Claude CodeでGoogleカレンダーの予定を毎朝自動通知する
参考にした公式情報(2026年9月29日確認)
- clasp 公式リポジトリ(README・更新履歴)
- clasp 公式ドキュメント: Run
- Google Apps Script: clasp のガイド
- Google Apps Script: ウェブアプリ
- Google Apps Script: マニフェストの公開範囲の設定
- Google Apps Script API: 関数の実行
- Google Apps Script: インストール型トリガー
- Google Apps Script: 割り当てと制限
法人向けAI導入・活用の月額伴走サービス
AI導入の疑問を、週1回のMTGで相談できる「AI顧問」
株式会社Nexaでは、ChatGPT・Claude・Claude CodeなどのAI導入に関する質問や、社内活用・業務自動化の進め方を週1回相談できる 月額7万円(毎月3社限定で月額5万円)のAI顧問サービス を提供しています。
「自社では何から始めるべきか」「この業務はAI化できるか」「どのツールを選ぶべきか」を、無料相談で整理します。
この記事で参照した外部情報
- clasp 公式リポジトリ(README・更新履歴)github.com
- clasp 公式ドキュメント: Rungithub.com
本文中でリンクしている外部ページの一覧です(自動生成)。最終確認日は本記事の最終更新日 2026-09-29 で、リンク先の内容はその後変わることがあります。
AI導入を検討中の方へ








