ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【GAS】clasp を使ってみる

clasp を使ってみたので、ここにメモを残します。

clasp とは

Command Line Apps Script Projects の略で、Google Apps Script(GAS)のプロジェクトをローカル PC(自分のパソコン)で作成、編集、デプロイ(公開)できるようにするためのコマンドラインインターフェース (CLI) ツールを指します。

できること

  • Apps Script のコードをローカルに保存してGitHubで管理できる
  • clasp push/pull で GAS ↔ GitHub の同期が可能

使い方

インストール

Node.js & clasp をインストール

npm install -g @google/clasp

Googleにログイン

コマンド実行後にブラウザが開くので、Google アカウントを選択して承認します。

clasp login

プロジェクト

新規

新規プロジェクトを作成(または既存プロジェクトを取得)

clasp create --title "My Script" --type sheets
既存

既存のプロジェクトの場合

clasp clone <scriptId>

scriptId は GAS エディタの URL に含まれる ID です。

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

git init
git remote add origin https://github.com/<user>/<repo>.git
git add .
git commit -m "Initial commit"
git push origin main

スクリプトの同期

ローカル → GAS:
clasp push
GAS → ローカル:
clasp pull

使用上のメモ

プロジェクトIDの変更は可能か?

Google Apps Script(GAS)の「プロジェクトID(Script ID)」については、実は 基本的に変更できません。ただし、「別のIDのプロジェクトとして再作成する」ことで 変更する方法はあります。

Google Apps Script(GAS)のWeb エディタ上では、階層構造をもたすことは可能か?

  • Google Apps Script(GAS)のWebエディタ上では、階層構造を持たせることは不可
  • ただし、clasp を使えばローカル環境でフォルダ階層構成を自由に作ることが可能
Webエディタ上の制約
  • 全てのファイルが「フラット(階層なし)」で管理される
  • src/utils/helper.gs のようなフォルダ構造は作れない
  • ファイル名に / を入れても、ただの文字列として扱われる
clasp を使えば階層を作れる

Google公式の clasp(Command Line Apps Script Projects)を使うと、ローカル環境では フォルダ構成を自由に設計できます。

例:ローカルのフォルダ構成

my-project/
├── .clasp.json
├── appsscript.json
├── src/
│   ├── main.gs
│   ├── services/
│   │   ├── driveService.js
│   │   └── sheetService.js
│   ├── utils/
│   │   ├── log.js
│   │   └── date.js
│   └── html/
│       └── index.html

「.clasp.json」 の設定例

{
  "scriptId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "rootDir": "src"
}

このように rootDir を指定することで、src 以下のファイルがGASプロジェクトにアップロードされます。

clasp で pushするときの動作としては、以下のような感じです。

  • ローカルのフォルダ構成は自動的にフラット化され、各ファイルがApps Scriptプロジェクトにアップロードされます。
  • Webエディタ上では階層は消えますが、ローカルでは階層を保ったまま管理が行えます。