claspとTypeScript使ってのGoogle App Scripts(以後、GAS)開発を試した件についてメモ書き(作成したサンプルコード)。
ローカルでコードを動かすために複数ステップ踏む必要があり、認証関連を理解しておく必要があった。
※ claspはnpmによりグローバルインストール済みの想定。環境構築はZenn, Qiita等にすでに記事があるので省略。
開発は概ね以下のフローになる。
clasp login
により、clasp CLIが自身のGoogleアカウントに紐づく形でGASにアクセスできるようにする。これにより、スクリプトのデプロイやプロジェクトの作成・更新、スクリプトのpull/pushができるようになる。
GASプロジェクトを新規作成する(clasp create)か、すでにあるプロジェクトを取得(clone)する
ローカルでスクリプトを動かせるようにする
clasp login --creds creds.json
)。これにより、clasp run
を実行するとローカルでスクリプトを動作できるようになる。clasp pull
する。ただし、すでにトランスパイルしたスクリプトがあるとそれらもpullされる。clasp push
する。clasp run
する(※)。実行ログはclasp logs
で見ることができる。コードがFIXした段階でコードをpush、deployする。
git等でバージョン管理している場合、適宜スクリプトをcommitする。ただし、.crasprc.jsonおよびcreds.jsonは機密情報なので.gitignoreで除外しておくこと。
※ 最新のスクリプトを実行したい場合、スクリプトをpushしておく必要がある。また、スクリプトエディタで実行可能APIに設定する必要がある。
項目 | claspの認証 | GASプロジェクトの認証 |
---|---|---|
区分 | claspのGoogleアカウントへのアクセストークン | GASアプリのGoogleアカウントへのアクセストークン |
役割 | clasp CLIがGoogle Drive上にあるGASプロジェクトに対し作成・操作できるようにする | アプリをローカルで実行できるようにする。アプリが使うAPI(例えばSheets API)へのアクセス権限も取り持つ |
適用範囲 | どのGASプロジェクトにも適用される | 特定のGASプロジェクトのみ適用される |
ユーザ変更後の再認証 | 必要 | 必要 |
スコープ変更後の再認証 | - | 必要 |
以下の2ケース。
GASプロジェクトの認証とともに、claspの再認証が必要(Googleアカウントが変わるため)。
|
|
|
|
の両方を行う。
appsscript.jsonを書き換えた上で、./.clasprc.jsonを再認証する必要がある。
appsscript.jsonのoauthScopesのアイテムを追加、削除する(スコープの一覧はこちら)。
clasp login --creds creds.json
により、GASプロジェクトを再認証する。例えば、oauthScopeでformsとカレンダーのfeedsを追加した場合、それぞれのアクセス要求が表示される(下図)。
スコープ変更に対応したスクリプトを書き、pushする。
不要。
確かにアクセストークンは1時間で期限切れになるものの、同時にrefresh_tokenが指定されている。refresh_tokenにより、トークンが切れたら期限が更新されたアクセストークンに更新されるようになっている。
以上