clasp×Claude CodeでGAS開発|連携手順とclasp runの設定【2026年9月】

執筆・編集:株式会社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プロジェクトをクローンしてみる

この記事の著者
株式会社Nexa 代表取締役川島 陸

一橋大学経済学部卒業後、フォーティエンスコンサルティング株式会社(旧 株式会社クニエ)にて法人向けAI導入支援等を経験。独立後、AI系メディア運営やDify/n8nの導入支援を経て、株式会社Nexaを創業。法人向けAI研修・AI導入支援・AI関連メディア運営を手掛ける。

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とClaude Codeの連携の仕組み。編集したローカルのファイルをclaspがGoogle側へ反映する流れ
図1: Claude Codeが編集し、claspがpushと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を使って以下の流れで構築しました。

  1. Claude Codeに「Driveの録画ファイルを日付フォルダに整理するGASを書いて」と依頼
  2. Claude CodeがローカルのCode.jsにコードを生成
  3. clasp pushでGASに反映
  4. 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つはブラウザでの操作が必要です。

GASの関数を実行する3つの方法の比較表。clasp run、公開範囲が自分のみのウェブアプリ、エディタでの実行の違い
図2: Claude Codeから直接実行できるのはclasp runだけ

clasp runが動かない原因と必要な設定

clasp run-function(別名clasp run)は、Apps Script APIを通じて関数を実行します。claspの公式ドキュメントが挙げる準備は次のとおりです。

  1. 標準のGoogle Cloudプロジェクトを用意し、GASエディタの「プロジェクトの設定」でプロジェクト番号を紐づける。.clasp.jsonにprojectIdを追加する
  2. Google CloudでOAuthクライアント(種類はデスクトップ アプリ)を作成し、client_secret.jsonとしてダウンロードする
  3. Google Cloudプロジェクトで「Apps Script API」を有効にする
  4. appsscript.jsonに、スクリプトが使うスコープ(oauthScopes)とexecutionApiの設定を書いてpushする
  5. clasp login --user runner --use-project-scopes --creds client_secret.jsonでログインする(runnerは任意の名前)
  6. 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顧問がサポートします。「何から始めればいいか分からない」という段階からご相談いただけます。

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は使えません。

  1. Claude Codeに上の関数をCode.jsへ追加させる
  2. clasp pushでGASに反映する
  3. clasp open-scriptでGASエディタを開く
  4. 関数の一覧からsetupDailyTriggerを選んで実行し、権限を承認する
  5. エディタ左側の「トリガー」に、作成したトリガーが表示されることを確認する

コードを書かずに、エディタ左側の「トリガー」→「トリガーを追加」から作ることもできます。

GASのトリガーを設定する5つの手順。関数の追加、clasp pushでの反映、エディタでの実行と承認、トリガーの確認
図3: トリガーの設定用の関数は、エディタで1回だけ実行する

実務での活用ポイント: 実行の結果は、エディタ左側の「実行数」(英語表示では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を管理・実行するための要点をまとめます。

  1. claspのセットアップ: npm install -g @google/claspでインストールし、Apps Script APIをオンにする。clasp loginで認証し、clasp clone-scriptでプロジェクトを取得する
  2. Claude Codeとの連携: Claude Codeにclaspのコマンドを実行させるか、claspをMCPサーバーとして登録する
  3. 基本ワークフロー: Claude Codeにコードを書かせる→clasp pushでGASに反映→clasp create-deploymentでデプロイ
  4. 関数の実行: 繰り返し実行するならclasp run-function。ウェブアプリは公開範囲を自分のみにして、ブラウザで確認する
  5. 定期実行: GASのトリガーを使う。設定用の関数は、エディタで1回実行する

claspを導入すると、GASのコードをローカルのファイルとして扱えるようになり、Claude Codeに編集から反映までを任せられます。まずは既存のGASプロジェクトをclaspでクローンして、ローカル開発環境の構築から試してみてください。

また、本記事では社内のGoogle Workspaceとの連携についても触れましたが、GmailやGoogle Driveとの連携については以下の記事も参考にしてください。

参考にした公式情報(2026年9月29日確認)


法人向けAI導入・活用の月額伴走サービス

AI導入の疑問を、週1回のMTGで相談できる「AI顧問」

株式会社Nexaでは、ChatGPT・Claude・Claude CodeなどのAI導入に関する質問や、社内活用・業務自動化の進め方を週1回相談できる 月額7万円(毎月3社限定で月額5万円)のAI顧問サービス を提供しています。

「自社では何から始めるべきか」「この業務はAI化できるか」「どのツールを選ぶべきか」を、無料相談で整理します。

AI顧問の無料相談はこちら →





この記事で参照した外部情報

  1. clasp 公式リポジトリ(README・更新履歴)github.com
  2. clasp 公式ドキュメント: Rungithub.com

本文中でリンクしている外部ページの一覧です(自動生成)。最終確認日は本記事の最終更新日 2026-09-29 で、リンク先の内容はその後変わることがあります。

AI導入を検討中の方へ

AIの力で、ビジネスを次のステージへ

まずはお気軽にご相談ください。貴社に最適なAI活用プランをご提案します。