GASとClasp
仕事で久しぶりにGASを触るようになり、大したコードもかかないから直接GASのエディターで記載してたけど、VSCodeから書いたほうがいいレベルの分量が想定されたのでClaspで色々やろうと思ったのでメモ
Claspの準備
こちらは、NodeJSとNPMをいれて(今更こちらの詳細は不要と思われる)、Claspをインストール
npm install @google/clasp -g
まあ、ここは普通。コード補完等のために追加でいれるものもあるのだけど、今回パスした(忘れてた)
VSCodeの準備
最近はやりのAI系をいれとくと、この手の「お作法が独特だけどポピュラー」な環境では便利
自分は、
Github Copilot
Google Cloud Code
が入ってます。
Claspがつかえるようにする準備
作業フォルダを作成し、そのフォルダをVSCodeでひらきます。
この時点ではなにもなし、Claspでログインをしておきます
clasp login
ブラウザが開いて認証求められるので認証してください
次にGASファイルのやりとり、ここは前と変わらず、
先にGASを作成してローカルにもってくるか、Claspで作成してアップロードするかで
clasp clone スクリプトID
または
clasp create
ファイルのやりとり
一人でやってるだけなら、
clasp pull
と
clasp push
で取得とアップロードができるので、こちらで完了
開発時のデプロイ
今回は、Taskをつかってみた
tasks.jsonをプロジェクトフォルダの直下に.vscodeをつくりそこにおく
Pull、Push
{
"version": "2.0.0",
"tasks": [
{
"label": "Clasp Pull",
"type": "shell",
"command": "clasp pull",
"group": "none",
"problemMatcher": []
},
{
"label": "Clasp Push",
"type": "shell",
"command": "clasp push",
"group": "none",
"problemMatcher": []
}
]
}
次にClaspコマンドで新しいバージョン、シェルスクリプトで現在のデプロイIDのバージョンをつくったバージョンに変更するスクリプトをつくる
#!/bin/bash
# 新しいバージョンを作成
version=$(clasp version "Updated via VSCode" | grep -o '[0-9]*')
# 特定のデプロイIDでデプロイを更新
deployId="DEPLOY_ID_FOR_UPDATE"
clasp deploy -i $deployId -V $version
シェルスクリプトには実行権限をつけておく
chmod +x ./update-deployment.sh
新しいバージョンをつくるTaskとできたバージョンの番号をつかって特定のデプロイIDのバージョンを更新するTask
(バージョンをつくるTaskは自分では使用しない。デプロイ更新のTaskから呼ばれる)
{
"label": "Create New Version",
"type": "shell",
"command": "clasp version 'New version from VSCode'",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Update Deployment",
"type": "shell",
"command": "./update-deployment.sh",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
tasks.jsonやupdate-deployment.shの置き場所等に問題がなければこれでOK
ものぐさなのでさらにアドオンにたよる
これをターミナル→タスクの実行、でやるのでいいのだけど、GUIでポチッとな、をしたいのでアドオンをいれた
私がいれたのはこれ
Task Runner
すると、左下のアウトライン、タイムラインの下にTASKRUNNERがあらわれ、上で作成した各種Taskが表示されるので、それぞれ必要に応じて実行する
雑感
正直、ここらへんのよく行われる作業については、たいていのAIは知っているので、聞くとほぼ問題なく答えてくれるし、GASのコードもやりたいことを正確にコメントでかけば、コパイロットがサジェストしてくれるのでいちいちググることもへるかもしれない
サンデーエンジニアにはいい時代になった(笑
ただし、AIたまに間違えるので注意。GASではあまり見ないけど、VBAでガンガン存在しないメソッドを提案されてこまりました