はじめに
Claude Codeを使ってGAS(Google Apps Script)のプロジェクトを作成したいときに、ローカル環境で構築し、手作業でGASに反映する作業に手間を感じていました。
そこで、clasp(新しいタブで開く)を使ってローカル環境で構築し、GitHubを通してGASにデプロイできる仕組みを導入します。
claspはApps Script エディタではなく、ターミナルからGASのプロジェクトを開発できるようにするためのツールです。
前提
- Node.js v20以上(v22以降を推奨)
- GitHub CLI(なくても良いです)
Apps Script APIを有効化する
- Apps Scriptの設定(新しいタブで開く)を開きます。
- 「Google Apps Script API」を選択し、設定をオンにします。
claspを準備する
- 作業用のディレクトリを作成し、npmプロジェクトとして初期化します。
npm init -y - 続いてclaspをグローバルインストールします。
npm i @google/clasp -g - インストールできたことを確認します。バージョン番号が出力されればOKです。
clasp --version3.4.1
claspにログインする
- 次のコマンドを実行します。
clasp login - ブラウザでGoogleアカウントの認可画面が開くので、GASプロジェクトを管理するアカウントで許可してください。
- アクセスされる情報を確認して、「次へ」を押してください。
- claspがアクセスできる情報を選択して、「次へ」を押してください。最低限以下の画像のとおりにチェックが入っていれば大丈夫です。
あとから許可が必要になった場合は
clasp loginをやり直してください。 - 白い画面に「Logged in! You may close this page.」とだけ表示されたページが表示されたら、ブラウザを閉じターミナルに戻ります。
- 認可が完了すると、ホームディレクトリに
~/.clasprc.jsonが作成されます。 - ログイン状態は以下のコマンドで確認します。
clasp show-authorized-userYou are logged in as <ログインしたアカウントのメールアドレス>.OAuth client ID: 1072944905499-vm2v2i5dvn0a0d2o4ca36i1vge8cvbn0.apps.googleusercontent.com (google-provided).
GASプロジェクトを作成し、ローカルに取得する
GASプロジェクトの作成はclaspでもできますが、今回はWebページ上で作成します。
- script.google.com(新しいタブで開く)を開き、「新しいプロジェクト」を選択します。補足
Google ドライブで任意のフォルダ内で右クリックをして、GASプロジェクトを作成することもできます。

また、スプレッドシートなどに紐づいたコンテナバインドスクリプトを使う場合は、対象ファイルを開き、「拡張機能」から「Apps Script」を選んで作成します。

- エディタ上部の「無題のプロジェクト」をクリックし、プロジェクト名(例として
test-gas-app)を入力し、「名前の変更」をクリックします。
- プロジェクトの左側のメニューにある「プロジェクトの設定」を開き、IDセクションの「スクリプト ID」をコピーします。
- 作業用のディレクトリで作成したプロジェクトのスクリプト IDを指定して、次のコマンドを実行します。
clasp clone-script "<スクリプト ID>" --rootDir src - 作業用のディレクトリが以下のようになっていることを確認してください。
.clasp.jsonのrootDirがsrcを相対パスで指していることを確認してください。- /(フォルダ)
- src(フォルダ)
- appsscript.json(ファイル)
- コード.js(ファイル)
- .clasp.json(ファイル)
- package.json(ファイル)
- src(フォルダ)
- /(フォルダ)
GASにローカルのファイルを反映する
- 以下のコマンドを実行して、GASに送信されるファイルを確認します。
clasp show-file-status - 以下のコマンドを実行して、GASに反映します。
clasp push補足GASのエディタにappsscript.jsonが表示されていない場合は、エディタの「プロジェクトの設定 > 全般設定」で「「appsscript.json」マニフェスト ファイルをエディタで表示する」にチェックを入れることで表示することができます。
Webページ上で初回デプロイする
最初のデプロイはGASのエディタで作成します。ここで作成したデプロイのIDを、以降の自動デプロイとWebアプリの更新で使い続けます。
clasp open-scriptを実行するか、script.google.com(新しいタブで開く)からプロジェクトを開きます。- 画面右上の「デプロイ」から「新しいデプロイ」を選択します。

- 「種類の選択」の横の歯車アイコンをクリックし、「ウェブアプリ」を選択します。

- 「新しい説明文」に「v0.1.0 初回デプロイ」などと入力し、「次のユーザーとして実行」は「自分」、「アクセスできるユーザー」は「自分のみ」を設定します。補足
「次のユーザーとして実行」と「アクセスできるユーザー」はどのようなGASプロジェクトを作るかによって設定すべき項目が異なる場合もあるためご自身で判断してください。
- 「デプロイ」をクリックします。
- 表示されたデプロイIDとウェブアプリのURLをコピーします。
デプロイIDをあとから確認する
デプロイIDは、エディタの「デプロイ」から「デプロイを管理」を開き、対象のデプロイを選択すると確認ができます。
ターミナルでは次のコマンドで一覧を表示できます。
clasp list-deploymentsFound 2 deployments.- <デプロイ ID> @HEAD - <デプロイ ID> @1 - v0.1.0 初回デプロイ@HEADと表示されているデプロイは常に最新のコードを指すテスト用のデプロイのため、URLを変えずに更新する用途には使用できません。
そのため、今回は初回デプロイ(@1)に記載されているデプロイIDを使用します。
GitHubにリポジトリを作成してpushする
- GitHubで空のリポジトリを作成(新しいタブで開く)してください。
.gitignoreを作成し、以下を追加します。# clasp の認証情報.clasprc.json補足環境変数のファイル(
.env)やnode_modules/を使う場合は、必要に応じて.gitignoreに追加してください。- 以下のコマンドを実行し、ローカルのフォルダをGitリポジトリとして初期化し、pushしてください。
git initgit add .git commit -m "Initial commit"git branch -M maingit remote add origin https://github.com/<ユーザー名>/<リポジトリ名>.gitgit push -u origin main
認証情報とデプロイIDをGitHubに登録する
GitHub Actionsで使う認証情報とデプロイIDを、リポジトリに登録します。
名前 | 種類 | 値 |
|---|---|---|
| シークレット |
|
| 変数 | 初回デプロイ時にコピーしたデプロイのID |
以下のコマンドを実行してGitHubのシークレットと変数に設定します。
gh secret set CLASPRC_JSON < ~/.clasprc.jsongh variable set DEPLOYMENT_ID --body "<デプロイID>"Webページで登録する場合は、対象のリポジトリの「Settings」から「Secrets and variables」の「Actions」を開き、シークレットは「Secrets」タブ、変数は「Variables」タブで登録してください。
GitHub Actionsのワークフローを作成する
mainブランチにpushしたときに、GASへの反映とWebアプリのデプロイ更新を自動で行うワークフローを作成します。
ワークフローを追加した後のフォルダ構成は次のとおりです。
- /(フォルダ)
- .github(フォルダ)
- workflows(フォルダ)
- deploy.yml(ファイル)
- workflows(フォルダ)
- src(フォルダ)
- appsscript.json(ファイル)
- コード.js(ファイル)
- .clasp.json(ファイル)
- .gitignore(ファイル)
- package.json(ファイル)
- .github(フォルダ)
.github/workflows/deploy.ymlを次の内容で作成します。
name: Deploy to Apps Scripton: push: branches: [main] workflow_dispatch:permissions: contents: read# 同時に複数のデプロイが実行されないようにするconcurrency: group: gas-deploy cancel-in-progress: falsejobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: 22 # ローカルの clasp --version と同じバージョンを指定する - name: Install clasp run: npm install -g @google/clasp@3.4.1 - name: Write clasp credentials env: CLASPRC_JSON: ${{ secrets.CLASPRC_JSON }} run: | umask 077 printf '%s' "$CLASPRC_JSON" > "$HOME/.clasprc.json" - name: Push to Apps Script run: clasp push --force - name: Update deployment env: DEPLOYMENT_ID: ${{ vars.DEPLOYMENT_ID }} run: clasp update-deployment "$DEPLOYMENT_ID" --description "deploy ${GITHUB_SHA::7}"自動デプロイの動作を確認する
- ワークフローのファイルをコミットし、mainブランチにpushします。
git add .githubgit commit -m "Add deploy workflow"git push - GitHubのリポジトリの「Actions」タブで、「Deploy to Apps Script」が画像のように成功していることを確認します。
- GASのエディタで「デプロイ」から「デプロイを管理」を開き、初回デプロイからバージョンが上がり、説明にコミットの短縮SHAが入っていることを確認します。
おわりに
このワークフローによりローカルでバージョン管理をしつつ、作成したGASのプロジェクトを自動デプロイすることができるようになります。
pushする前にローカルでアプリを確認することはできないため、デザインはローカルで動くHTMLの状態でサンドボックスを作成し、それをGASに作り変える進め方がスムーズだと思います。
Claude CodeやCodexを使うことでさらに効率的に開発ができるようになるので、ぜひ試してみてください。
参考・引用
- clasp でコマンドライン インターフェースを使用する | Apps Script | Google for Developers(新しいタブで開く)
- clasp Codelab(新しいタブで開く)