GASをClaude Codeで管理・実行する方法|clasp連携の実践手順

clasp CLIとClaude Codeを組み合わせることで、GASのコード生成・プッシュ・デプロイ・実行をすべてCLIから管理できます。

  • 要点1: claspはGoogle公式のCLIツール。ローカルエディタでGASを開発してGitで管理できる
  • 要点2: clasp runはAPI設定が複雑なため、Web Appデプロイ+curlで実行する方式が実用的
  • 要点3: GASのトリガー機能を使えばGitHub Actionsより設定が簡単で、定期実行も確実

対象: GASをより効率的に管理・自動化したい開発者・DX推進担当者

今日やること: npm install -g @google/clasp でclaspをインストールし、既存のGASプロジェクトをクローンしてみる

この記事の著者
川島陸

株式会社Nexa 代表取締役川島 陸

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

Claude CodeからGAS(Google Apps Script)を操作するには、claspというGoogleの公式CLIツールが不可欠です。claspを使えば、GASのコードをローカルで編集してClaude Codeに自動生成させ、そのままCLIでプッシュ・デプロイまで完結させることができます。

「GASを使いたいがオンラインエディタだと管理が大変」「Claude Codeと連携してGASの業務自動化を進めたい」——こうした課題は、claspの導入で解消できます。

この記事では、clasp CLIの基本セットアップからClaude Codeとの連携ワークフロー、実際の業務自動化事例まで、ある企業での実践内容をもとに解説します。clasp runが動かない場合の代替手段も含めた、すぐに使える手順です。

clasp(クラスプ)とは?GASをローカルで管理できるCLIツール

claspとは、Google Apps ScriptをローカルのPCで開発・管理するためのGoogleが公開している公式CLIツールです。GitHubのスター数は1万を超えており、GAS開発者の間では標準的なツールとして定着しています。

これまでGASはブラウザ上のオンラインエディタでしか編集できませんでしたが、claspを使えばVS Codeなどのローカルエディタで開発して、clasp pushコマンドで反映できます。

claspが解決する3つの問題

課題 GASオンラインエディタ clasp導入後
バージョン管理 できない(都度スナップショット) Gitで完全に管理可能
チーム開発 エディタを共有するしかない ローカルで並行して開発できる
Claude Code連携 ブラウザ操作が必要 CLIなのでClaude Codeから直接実行可能

特にClaude Codeとの相性が良い点が重要です。Claude Codeはターミナルコマンドを実行できるため、claspのコマンドをそのまま呼び出してGASのプッシュやデプロイを自動化できます。

claspでできること・できないこと

できること:– GASプロジェクトのクローン(ダウンロード)- ローカルで編集したコードをGASにプッシュ(clasp push)- デプロイバージョンの作成・更新(clasp deploy)- GASのログ確認(clasp logs)- Web Appとしてデプロイしてcurlから実行可能にする

できないこと(または制限あり):clasp runでGAS関数を直接実行するには、Google Cloud ConsoleでApps Script APIを有効化し、API Executableとしてデプロイする追加設定が必要- GASのトリガー(定期実行設定)はclaspのCLIで管理できない(GAS内のコードで設定する)

claspのインストールと初期設定手順

claspはNode.jsのnpmパッケージとして配布されています。

前提条件の確認

node -v   # v18以上を推奨npm -v    # v9以上を推奨

Node.jsがインストールされていない場合は、公式サイト(nodejs.org)からインストールしてください。

claspのインストールとログイン

# グローバルインストールnpm install -g @google/clasp# バージョン確認clasp --version# Googleアカウントで認証clasp login

clasp loginを実行すると、ブラウザが開きGoogleアカウントの認証ページが表示されます。Google Apps ScriptにアクセスしているGoogleアカウントでログインしてください。

ポイントclaspのアクセストークンは約1時間で期限切れになります。これはGoogle OAuthの仕様です。ただし、リフレッシュトークンが~/.clasprc.jsonに保存されているため、次回以降は自動更新されます。長期間使用しなかった場合のみ、再度clasp loginが必要になります。

GASプロジェクトのクローン

既存のGASプロジェクトをローカルに取得するには、スクリプトIDが必要です。スクリプトIDはGASエディタのURLから確認できます(/projects/[スクリプトID]/editの形式)。

# 新しいディレクトリを作成してクローンmkdir my-gas-project && cd my-gas-projectclasp clone [スクリプトID]

クローンに成功すると、ローカルに以下のファイルが生成されます:- .clasp.json — スクリプトIDなどの設定ファイル- appsscript.json — GASプロジェクトの設定(タイムゾーン、ランタイムなど)- Code.js(または.gs)— GASのスクリプトファイル

\ Claude Codeの導入、何から始めればいいかわかります /

法人向けClaude Code個別指導の無料相談はこちら

Claude CodeとclaspでGASの開発ワークフローを構築する

claspのセットアップが完了したら、Claude Codeとの連携ワークフローを構築します。

ローカル編集 → push → デプロイの基本フロー

# ローカルのコードをGASにアップロードclasp push# デプロイバージョンを作成(Web App・API Executableとして公開する場合)clasp deploy --description "v1.0 初回デプロイ"# 既存デプロイを更新clasp deploy --deploymentId [デプロイID] --description "v1.1 バグ修正"

実務での活用ポイント: clasp pushは毎回全ファイルをアップロードするため、Gitコミットと合わせて実行するとバージョン管理がしやすくなります。

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エディタで動作確認(または後述のWeb App経由でテスト)

Claude Codeはターミナルコマンドを実行できるため、コード生成後にそのままclasp pushを自動実行させることも可能です。

appsscript.jsonの管理

appsscript.jsonはGASプロジェクトの重要な設定ファイルです。タイムゾーンの設定が誤っていると、定期実行トリガーが想定外の時刻に動作します。

{  "timeZone": "Asia/Tokyo",  "dependencies": {},  "exceptionLogging": "STACKDRIVER",  "runtimeVersion": "V8"}

timeZone: "Asia/Tokyo" を必ず設定してください。デフォルトの "America/New_York" のままにしている場合、定期実行が日本時間と14時間ずれてしまいます。

【重要】clasp runが使えない場合の代替手段 — Web Appデプロイ方式

claspを使い始めてほぼ全員がつまずく点が、clasp runの制限です。

clasp runの制限と必要な設定

clasp runでGAS関数を直接実行するには、以下の設定がすべて必要です。

  1. Google Cloud Consoleで「Apps Script API」を有効化
  2. GASプロジェクトを「API Executable」としてデプロイ(GASエディタで手動操作が必要)
  3. OAuth認証の追加設定

この設定は手順が複雑で、GASエディタ上での手動操作が必要なため、Claude Codeからの完全自動化が難しい状況です。

Web App方式でcurlから関数を実行する

実用的な代替手段として、GASをWeb Appとしてデプロイしてcurlから呼び出す方式があります。ある企業での実践では、この方式に切り替えることで問題を解決しました。

Step 1: GASにdoGet関数を追加する

// Code.jsfunction doGet(e) {  const action = e.parameter.action;  if (action === 'organize') {    organizeAllMeetFiles();    return ContentService.createTextOutput(JSON.stringify({ status: 'OK', action: action }))      .setMimeType(ContentService.MimeType.JSON);  }  if (action === 'dryRun') {    const result = organizeAllMeetFiles(true);  // dryRunモード    return ContentService.createTextOutput(JSON.stringify({ status: 'OK', result: result }))      .setMimeType(ContentService.MimeType.JSON);  }  return ContentService.createTextOutput(JSON.stringify({ status: 'error', message: 'Unknown action' }))    .setMimeType(ContentService.MimeType.JSON);}

Step 2: appsscript.jsonにWeb App設定を追加する

{  "timeZone": "Asia/Tokyo",  "dependencies": {},  "webapp": {    "executeAs": "USER_DEPLOYING",    "access": "MYSELF"  },  "exceptionLogging": "STACKDRIVER",  "runtimeVersion": "V8"}

Step 3: claspでpushしてデプロイする

clasp pushclasp deploy --description "Web App v1.0"

デプロイが完了すると、Web App URLが発行されます。

Step 4: Claude CodeからcurlでGASを実行する

# dryRunで動作確認curl "[Web App URL]?action=dryRun"# 本番実行curl "[Web App URL]?action=organize"

この方式であれば、Claude Codeからcurlコマンドを実行するだけでGAS関数を呼び出せます。「GASが何かを実行したい」というニーズのほとんどは、この方式で解決できます。

実務での活用ポイント: Web App URLはパラメータで関数名を渡せるため、1つのdoGet関数で複数の処理を管理できます。上記の例のようにactionパラメータで処理を分岐させる設計が保守しやすいです。


Claude Codeの導入や活用方法について、個別にご相談いただけます。「どの業務から自動化すればいいか」「GASとClaude Codeを組み合わせた社内ツール構築を相談したい」といった段階から対応しています。

法人向けClaude Code個別指導の無料相談はこちら|まずはお困りごとをプロに相談


GASのトリガー設定 — Claude Codeから定期実行を管理する

GASにはGoogle側のサーバーで定期実行を管理するトリガー機能があります。GitHub ActionsよりもGASのトリガーを使った方が、設定が圧倒的にシンプルです。

GASトリガーとGitHub Actionsの比較

項目 GASトリガー GitHub Actions
セットアップ GAS内の関数を1回実行するだけ Secretsへのトークン登録が必要
トークン管理 不要(GASが自動で認証) refresh_token→access_tokenの更新が必要
信頼性 Google側で確実に実行 トークン失効のリスクあり
ログ確認 GASの実行ログで確認 GitHub Actions上で確認
コスト 無料(GASの実行制限内) 無料枠あり(月2,000分)

ほとんどのケースでGASのトリガー機能で十分です。GitHub Actionsを選ぶのは、他のCI/CDワークフローと統合したい場合など、特定の要件がある場合に限られます。

GASトリガーを設定する関数を作成する

トリガーを設定するための関数をGASに追加して、1回だけ実行します。

// Code.js に追加function setupDailyTrigger() {  // 既存のトリガーを削除(重複防止)  const triggers = ScriptApp.getProjectTriggers();  triggers.forEach(trigger => ScriptApp.deleteTrigger(trigger));  // 毎日9:00に実行するトリガーを設定  ScriptApp.newTrigger('organizeAllMeetFiles')    .timeBased()    .atHour(9)    .everyDays(1)    .create();  console.log('毎日9:00に実行するトリガーを設定しました');}
# コードをpushしてデプロイclasp push# Web App経由でトリガー設定関数を実行curl "[Web App URL]?action=setupTrigger"

または、GASエディタ上でdoGetにactionを追加してsetupDailyTriggerをWeb App経由で実行することもできます。

実務での活用ポイント: トリガー設定関数は「1回実行して設定完了」のものなので、setupDailyTriggerを実行後はGASの実行ログ(clasp logs)で確認してから本番運用に移行しましょう。

実際の業務自動化事例 — claspで管理したGASの活用例

事例1 — Google Meetの録画ファイルを自動整理

課題: Google Meetの録画ファイルがDriveの一か所に貯まり続けて管理が困難になっていました。どのファイルがどの会議のものか判別できない状態でした。

解決方法:– GASでDriveの録画ファイルを取得し、会議名・日付から自動的に整理するスクリプトをClaude Codeで生成- claspでローカル管理し、修正・テストのサイクルをCLIで完結- dryRunモードで影響範囲を確認してから本番実行- GASのトリガーで毎日9:00に自動実行するよう設定

成果: 毎日の録画ファイル整理作業が完全に自動化。手動作業ゼロで録画ファイルの管理が実現しました。

事例2 — Slack Webhookとの連携通知

GASはSlack Webhook URLへのHTTPリクエストを送信できるため、様々なGoogleサービスの更新をSlackに通知できます。

// Slack通知の基本コードfunction sendSlackNotification(message) {  const webhookUrl = PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_URL');  const payload = JSON.stringify({    text: message,    username: 'GAS Bot'  });  UrlFetchApp.fetch(webhookUrl, {    method: 'POST',    contentType: 'application/json',    payload: payload  });}

Webhook URLはGASのスクリプトプロパティに保存しておくと、コードをGitHubで管理する際に認証情報が漏洩するリスクを避けられます。

Claude Codeがこのような通知コードを自動生成し、claspでpushすることで、Google WorkspaceのあらゆるイベントをSlackに連携する仕組みを素早く構築できます。実際の活用例として、スプレッドシートに新規データが入力された際の通知、Driveに特定のファイルが追加された際のアラートなどが挙げられます。

\ 業務自動化のお悩み、プロが30分で整理します /

法人向けClaude Code個別指導の無料相談はこちら

よくある質問

Q. claspのトークンが頻繁に切れる問題はどう対処すればいいですか?

claspのアクセストークンは約1時間で期限切れになります。これはGoogle OAuthの仕様であり、避けられません。ただし、~/.clasprc.jsonにリフレッシュトークンが保存されているため、通常は自動更新されます。

「認証が切れている」というエラーが頻繁に出る場合は、clasp loginを再実行してください。長期間使用しない期間(2〜3週間以上)がある場合に認証が切れることがあります。

Q. GASのオンラインエディタとclaspのローカルファイルは同期されますか?

clasp pushでローカル→GAS(オンライン)への同期、clasp pullでGAS→ローカルへの同期が行われます。ただし、双方向のリアルタイム同期ではありません。

運用上の注意: オンラインエディタで直接編集した場合は、ローカルでclasp pullしてから作業を再開するのが安全です。ローカルとオンラインの変更が競合すると、clasp pushで上書きしてしまう可能性があります。

Q. clasp runとWeb Appデプロイはどちらを選ぶべきですか?

ほとんどのケースではWeb Appデプロイ方式を推奨します。 理由は以下の通りです。

  • clasp runはGoogle Cloud ConsoleでのAPI有効化、GASエディタでの手動デプロイ設定など、追加設定が複雑
  • Web App方式はappsscript.jsonに数行追加するだけで設定できる
  • Web App方式はcurlからHTTPリクエストで呼び出せるため、Claude Codeや他のツールとの連携が容易

clasp runが有利なケースは、Web App URLを外部に公開せずに、認証されたスクリプトとして実行したい場合など、セキュリティ要件が厳しい場面に限られます。

まとめ

Claude CodeとclaspでGASを管理・実行するための要点をまとめます。

  1. claspのセットアップ: npm install -g @google/claspでインストール、clasp loginで認証、clasp clone [スクリプトID]でプロジェクト取得
  2. 基本ワークフロー: ローカルでClaude Codeにコードを生成させて→clasp pushでGASに反映→clasp deployでデプロイ
  3. clasp runの代替: Web Appデプロイ+curlでGAS関数を呼び出す方式が実用的。doGet関数でactionパラメータを使って複数の処理を管理
  4. 定期実行: GitHub Actionsよりもトークン管理不要なGASのトリガー機能が圧倒的にシンプル
  5. 実際の活用: Meet録画整理・Slack通知など、Google Workspaceの業務をGAS+claspで自動化できる

claspを導入することで、GASの開発がCLIで完結し、Claude Codeとのシームレスな連携が実現します。まずは既存のGASプロジェクトをclaspでクローンして、ローカル開発環境の構築から試してみてください。

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

Claude Codeの導入・活用をサポートします

株式会社Nexaでは、Claude Codeを活用した業務自動化の個別指導・企業研修を提供しています。「GASとClaude Codeを組み合わせた業務効率化を始めたい」「非エンジニアでも自動化ツールを作れるようになりたい」という段階からご支援いたします。

法人向けClaude Code個別指導の無料相談はこちら|まずはお困りごとをプロに相談 →



関連記事

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

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

Claude Codeのプロに無料相談 30秒で日程調整完了