本文へスキップ

GASをローカル環境で開発する

はじめに

Claude Codeを使ってGAS(Google Apps Script)のプロジェクトを作成したいときに、ローカル環境で構築し、手作業でGASに反映する作業に手間を感じていました。

そこで、clasp⁠(新しいタブで開く)を使ってローカル環境で構築し、GitHubを通してGASにデプロイできる仕組みを導入します。

claspはApps Script エディタではなく、ターミナルからGASのプロジェクトを開発できるようにするためのツールです。

前提

  • Node.js v20以上(v22以降を推奨)
  • GitHub CLI(なくても良いです)

Apps Script APIを有効化する

  1. Apps Scriptの設定⁠(新しいタブで開く)を開きます。
  2. 「Google Apps Script API」を選択し、設定をオンにします。

    Apps Scriptの設定画面。Google Apps Script APIがオンになっている

claspを準備する

  1. 作業用のディレクトリを作成し、npmプロジェクトとして初期化します。
    ターミナルbash · 1行
    npm init -y
  2. 続いてclaspをグローバルインストールします。
    ターミナルbash · 1行
    npm i @google/clasp -g
  3. インストールできたことを確認します。バージョン番号が出力されればOKです。
    ターミナルbash · 2行
    clasp --version3.4.1

claspにログインする

  1. 次のコマンドを実行します。
    ターミナルbash · 1行
    clasp login
  2. ブラウザでGoogleアカウントの認可画面が開くので、GASプロジェクトを管理するアカウントで許可してください。

    claspのログインで、Googleアカウントを選ぶ画面

  3. アクセスされる情報を確認して、「次へ」を押してください。

    claspに名前とメールアドレスへのアクセスを許可する画面

  4. claspがアクセスできる情報を選択して、「次へ」を押してください。最低限以下の画像のとおりにチェックが入っていれば大丈夫です。

    あとから許可が必要になった場合はclasp loginをやり直してください。

    claspがアクセスできる情報を選ぶ画面。ドライブ上の特定のファイル、ウェブアプリとしての公開、デプロイの作成と更新、プロジェクトの作成と更新にチェックが入っている

  5. 白い画面に「Logged in! You may close this page.」とだけ表示されたページが表示されたら、ブラウザを閉じターミナルに戻ります。
  6. 認可が完了すると、ホームディレクトリに~/.clasprc.jsonが作成されます。
  7. ログイン状態は以下のコマンドで確認します。
    ターミナルbash · 3行
    clasp show-authorized-userYou are logged in as <ログインしたアカウントのメールアドレス>.OAuth client ID: 1072944905499-vm2v2i5dvn0a0d2o4ca36i1vge8cvbn0.apps.googleusercontent.com (google-provided).

GASプロジェクトを作成し、ローカルに取得する

GASプロジェクトの作成はclaspでもできますが、今回はWebページ上で作成します。

  1. script.google.com⁠(新しいタブで開く)を開き、「新しいプロジェクト」を選択します。
    補足

    Google ドライブで任意のフォルダ内で右クリックをして、GASプロジェクトを作成することもできます。

    Google ドライブの右クリックメニュー。「その他」から「Google Apps Script」を選べる

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

    スプレッドシートの「拡張機能」メニューにある「Apps Script」
  2. エディタ上部の「無題のプロジェクト」をクリックし、プロジェクト名(例としてtest-gas-app)を入力し、「名前の変更」をクリックします。
    プロジェクトの名前を変更するダイアログ。プロジェクト タイトルにtest-gas-appと入力している
  3. プロジェクトの左側のメニューにある「プロジェクトの設定」を開き、IDセクションの「スクリプト ID」をコピーします。
  4. 作業用のディレクトリで作成したプロジェクトのスクリプト IDを指定して、次のコマンドを実行します。
    ターミナルbash · 1行
    clasp clone-script "<スクリプト ID>" --rootDir src
  5. 作業用のディレクトリが以下のようになっていることを確認してください。
    .clasp.jsonのrootDirがsrcを相対パスで指していることを確認してください。
    • /(フォルダ)
      • src(フォルダ)
        • appsscript.json(ファイル)
        • コード.js(ファイル)
      • .clasp.json(ファイル)
      • package.json(ファイル)

GASにローカルのファイルを反映する

  1. 以下のコマンドを実行して、GASに送信されるファイルを確認します。
    ターミナルbash · 1行
    clasp show-file-status
  2. 以下のコマンドを実行して、GASに反映します。
    ターミナルbash · 1行
    clasp push
    補足

    GASのエディタにappsscript.jsonが表示されていない場合は、エディタの「プロジェクトの設定 > 全般設定」で「「appsscript.json」マニフェスト ファイルをエディタで表示する」にチェックを入れることで表示することができます。

    プロジェクトの設定の全般設定。「appsscript.json」マニフェスト ファイルをエディタで表示する、にチェックが入っている

Webページ上で初回デプロイする

最初のデプロイはGASのエディタで作成します。ここで作成したデプロイのIDを、以降の自動デプロイとWebアプリの更新で使い続けます。

  1. clasp open-scriptを実行するか、script.google.com⁠(新しいタブで開く)からプロジェクトを開きます。
  2. 画面右上の「デプロイ」から「新しいデプロイ」を選択します。
    「デプロイ」ボタンのメニュー。「新しいデプロイ」「デプロイを管理」「デプロイをテスト」が並ぶ
  3. 「種類の選択」の横の歯車アイコンをクリックし、「ウェブアプリ」を選択します。
    「種類の選択」の歯車アイコンから開いたメニューで「ウェブアプリ」を選ぶ
  4. 「新しい説明文」に「v0.1.0 初回デプロイ」などと入力し、「次のユーザーとして実行」は「自分」、「アクセスできるユーザー」は「自分のみ」を設定します。

    新しいデプロイの設定。説明にv0.1.0 初回デプロイ、次のユーザーとして実行に自分、アクセスできるユーザーに自分のみを設定している

    補足

    「次のユーザーとして実行」と「アクセスできるユーザー」はどのようなGASプロジェクトを作るかによって設定すべき項目が異なる場合もあるためご自身で判断してください。

  5. 「デプロイ」をクリックします。
  6. 表示されたデプロイIDとウェブアプリのURLをコピーします。

    デプロイの完了画面。デプロイIDとウェブアプリのURLをコピーできる

デプロイIDをあとから確認する

デプロイIDは、エディタの「デプロイ」から「デプロイを管理」を開き、対象のデプロイを選択すると確認ができます。

ターミナルでは次のコマンドで一覧を表示できます。

ターミナルbash · 4行
clasp list-deploymentsFound 2 deployments.- <デプロイ ID> @HEAD - <デプロイ ID> @1 - v0.1.0 初回デプロイ

@HEADと表示されているデプロイは常に最新のコードを指すテスト用のデプロイのため、URLを変えずに更新する用途には使用できません。
そのため、今回は初回デプロイ(@1)に記載されているデプロイIDを使用します。

GitHubにリポジトリを作成してpushする

  1. GitHubで空のリポジトリを作成⁠(新しいタブで開く)してください。
  2. .gitignoreを作成し、以下を追加します。
    .gitignoreテキスト · 2行
    # clasp の認証情報.clasprc.json
    補足

    環境変数のファイル(.env)やnode_modules/を使う場合は、必要に応じて.gitignoreに追加してください。

  3. 以下のコマンドを実行し、ローカルのフォルダをGitリポジトリとして初期化し、pushしてください。
    ターミナルbash · 6行
    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を、リポジトリに登録します。

名前

種類

値

CLASPRC_JSON

シークレット

~/.clasprc.jsonの内容

DEPLOYMENT_ID

変数

初回デプロイ時にコピーしたデプロイのID

以下のコマンドを実行してGitHubのシークレットと変数に設定します。

ターミナルbash · 2行
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(ファイル)
    • src(フォルダ)
      • appsscript.json(ファイル)
      • コード.js(ファイル)
    • .clasp.json(ファイル)
    • .gitignore(ファイル)
    • package.json(ファイル)

.github/workflows/deploy.ymlを次の内容で作成します。

deploy.ymlYAML · 43行
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}"

自動デプロイの動作を確認する

  1. ワークフローのファイルをコミットし、mainブランチにpushします。
    ターミナルbash · 3行
    git add .githubgit commit -m "Add deploy workflow"git push
  2. GitHubのリポジトリの「Actions」タブで、「Deploy to Apps Script」が画像のように成功していることを確認します。

    GitHub Actionsで「Deploy to Apps Script」のワークフローの実行が成功している

  3. GASのエディタで「デプロイ」から「デプロイを管理」を開き、初回デプロイからバージョンが上がり、説明にコミットの短縮SHAが入っていることを確認します。

    「デプロイを管理」の画面。説明がdeploy dd5200eに変わり、バージョン2になっている

おわりに

このワークフローによりローカルでバージョン管理をしつつ、作成したGASのプロジェクトを自動デプロイすることができるようになります。

pushする前にローカルでアプリを確認することはできないため、デザインはローカルで動くHTMLの状態でサンドボックスを作成し、それをGASに作り変える進め方がスムーズだと思います。

Claude CodeやCodexを使うことでさらに効率的に開発ができるようになるので、ぜひ試してみてください。

参考・引用