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エディタ上では階層は消えますが、ローカルでは階層を保ったまま管理が行えます。