You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[In the container]# yarn init -y
[In the container]# yarn add -D @google/clasp @types/google-apps-script typescript ts-loader
clasp にログインする。
[In the container]# yarn clasp login
① 出てきた URL にアクセス
② Google アカウントでログイン
③ localhost:*** という無効な URL に遷移すれば OK
④ 別ターミナルでコンテナ内に入り、 curl 'さっきの無効な URL'
⑤ ターミナルにログイン成功の旨が出ていればOK
clasp 環境を Docker で作ってみたので、そのときの作業ログを以下に示す。
Clasp とは
GAS をローカルで開発するためのツール。
前準備: GAS API を有効化する
ここから有効化できる: https://script.google.com/home/usersettings
用意するファイルとディレクトリ構造
ディレクトリ構造:
用意するファイル:
.gitignore
補足:
Code.gs
はビルド結果なので gitignore しておく.env
補足:
$HOME
直下に作成する( →参考 )ので、$HOME
を$WORKING_DIR
にするよう設定している$WORKING_DIR
にマウントされる=カレントディレクトリに credential 情報が書かれたドットファイルが置かれるが、 .gitignore で指定したドットファイル以外は gitignore するようにすることで誤 push を防いでいるdocker-compose.yml
環境構築手順
コンテナを起動して中に入る・
yarn init
し、Clasp と TypeScript をインストールする。clasp にログインする。
補足: なぜ別ターミナルで curl する必要があるのか?
どうやら
clasp login
の--no-localhost
オプションがうまく機能しないらしいため。その回避策として別ターミナルで curl を叩く方法が紹介されていた( →参考 )。
今回、
--no-localhost
オプションは使用していないが、同じ方法でログインできた。今回は スクリプトIDが
<GAS_SCRIPT_ID>
の GAS プロジェクトのソースコードをsrc/
ディレクトリに配置することにする。そのため、まず
src/
ディレクトリを作成する。指定したスクリプトIDのGASプロジェクトのコードをローカルへcloneする。
clone 後、次の3ファイルが生成される。
このうち、次の2ファイルを
src/
へ移動させる。.clasp.json
のrootDir
を次のように変更する。clasp push
で、ローカルのコードを GAS 上へ反映させる。Web 上の GAS エディタのページをリロードすると、ローカルのコードが反映されているはず。
ES modules の利用
2024/03/18現在、 GAS は ES modules に対応しておらず、
import
などが使えない。使えるようにする方法はいくつかあるようだが、今回は gas-webpack-plugin を使ってみる。
Webpack と gas-webpack-plugin をインストール。
今回は
src/
のソースコードをビルドしてdist/
に置くことにする。そのため、まず
dist/
を作成する。続いて、
appsscript.json
をdist/
へ移動させる。併せて、
.clasp.json
のrootDir
を次のように変更する。webpack.config.json
を作成し、次の内容を設定する。この時点で、次のようなディレクトリ構造になっているはず。
yarn webpack
でコードをビルドした後、clasp push
で、ローカルのコードを GAS 上へ反映させる。Web 上でローカルのコードが確認できたら OK 。
サンプルコード
clasp create
等の際の動作確認用サンプルコードを以下に示す。ディレクトリ構造:
index.ts
main.ts
TIPS
こんな感じで Makefile に
clasp push
用コマンドを登録しておくと、make push
で GAS へ push できて楽。Makefile
参考記事
The text was updated successfully, but these errors were encountered: