【GAS】大幅にアップデート!Dashboard、Google Apps Script API、claspはGAS開発を根本から変えてしまうかも!?

みんな大好きGoogle Apps Script(GAS)ですが、スーパー興奮するアップデートがやってまいりました!
実際に試してみた部分もあるので、ご紹介したいと思います。

GAS開発の悩み

GASの開発において、以下のような悩みを持っていらっしゃる方は少なくないと思っています。

バージョン管理できない

GASのバージョン管理は機能として存在はしますが、プロジェクトのスナップショットを保存することで、ライブラリの外部公開のときにバージョンを指定させることぐらいにしか使えません。
そのため、変更履歴のトレースや一つ前のバージョンにコードを戻すといったことはできませんでした。(変更履歴は一応見られますが、ホント気持ち程度ですよね。。。)

スクリプトどこにあったっけ?問題

スタンドアロンなスクリプトであれば、Driveで検索することはそこまで難しくないですが、コンテナバウンドなスクリプト(スプレッドシートなどからエディタを開いて作られるGASのプロジェクト)が乱立すると、どこにあったっけ?問題が深刻化してきます。検索できないですからね。

複数人での開発キツイ

一度Drive上のスタンドアロンのスクリプトを2人で開発したことがありますが、、、わざわざプロジェクトをコピーして別々に開発し、最終的にガッチャンコさせていました。それぞれの進捗を自分のスクリプトに少しずつマージして、、、ってつらいです。

きました!これがほしかったんです!

これらの悩みを解決してくれるのでは!?という今回のアップデート。ひとつひとつご紹介していきます。

Apps Script Dashboard

以下のURLからアクセスすることができます。
https://script.google.com

このダッシュボードで出来ることは、

  • 自身が所有するGASプロジェクトの一覧表示(コンテナバウンド含む!コンテナバウンド含むっ!
  • GASの実行ログの閲覧

コンテナバウンド含むすべてのスクリプトを検索できるようになったのは、でかいですねー。
スクリプトの実行時間や、いつ実行が失敗したかなども一覧で表示されるので、とても便利です。

Google Apps Script API

おもむろにDashboardをいじくっていると、 設定 のところに気になるものが、、、

Google Apps Script APIとは何ぞや!?

画面に表示されている表記をそのまま引用しますと、、、

Google Apps Script API を利用すると、この API の使用を許可したサードパーティ製アプリケーションで、Apps Script のプロジェクトやデプロイメントを変更できます。以下が該当します。
・あなたをオーナーとして新しいプロジェクトを作成する
・プロジェクトを更新または削除する
・プロジェクトのデプロイメントを追加、削除する
・エンドポイントを追加または削除してプロジェクトのデプロイ方法を変更したり、実行するプロジェクトのバージョンを変更したりする
・プロジェクトのデプロイメントにアクセスできるユーザーを変更する

どうやらGASのプロジェクト管理に関することをRESTfulなAPIにしたようです。
外部からプロジェクトを作成したり、デプロイしたり、共有権限を持たせたり、
夢が広がりますねー!ローカルで開発できるってことは、gitでバージョン管理できるってことじゃないですか!共同作業もできそう!

公式のドキュメントはこちらです。
https://developers.google.com/apps-script/api/

でもなんかこう、もう少し楽にローカル開発できないものでしょうか、、、例えばCLIツールがあったりとか、、、

clasp

出ていました!claspです!
https://github.com/google/clasp

claspはGoogle Apps Script APIを使った、GASプロジェクトの管理のCLIツールです。
codelabも公開されています。
https://codelabs.developers.google.com/codelabs/clasp/#0

このcodelabをやってみました!これによって以下のことを学ぶことができます!

  • claspでのApps Scriptプロジェクトの作成方法
  • 既存プロジェクトへのclone、pull、pushの方法
  • スクリプトのデプロイ管理

また、ここから先を読み進める前に、先ほどのDashboardの 設定 からGoogle Apps Script APIをONにしておいてください。

claspのインストール

まずは、claspをインストールしましょう。下記コマンドでインストールできます。
(v4.7.4以上のnode.jsが必要です。)

$ npm i @google/clasp -g

Googleアカウントでログイン

下記コマンドでログインできます

$ clasp login

コマンドを実行すると、URLが出現するので、アクセスして承認をしてください。

スタンドアロンプロジェクトの作成

以下のコマンドで作成できます。スーパー簡単ですね。

$ mkdir hello_clasp && cd hello_clasp
$ clasp create "Hello Clasp"

ここで、Dashboardを見てみると、、、

プロジェクトできてる!感激!

pullとpush

codelabでは先に openclone を紹介していますが、まずは pullpush を試してみたいと思います。
先ほどの create の状態では、プロジェクト内にデフォルトで生成される Code.gs がローカルに存在しません。これを反映させるために、以下のコマンドを実行します。

$ clasp pull

これで Code.gs がローカルにダウンロードされます。
この Code.gs を編集して、プロジェクトに push してみましょう。 まずは、 Code.gs を以下のように編集します

function myFunction() {
  Logger.log("Hello Clasp!!");
}

保存したら、 push してみましょう。

$ clasp push

そうすると、どうなるでしょうか、、、?

プロジェクトの内容が更新されてますね!素晴らしい!
このローカルファイルたちをgitで管理すれば、ばっちりバージョン管理もできそうですね!

cloneとopen

既存のプロジェクトをローカルに保存したい場合は clone を使います。
テストのために、プロジェクトを一個作って試してみました。

そして、下記のコマンドを実行します。

$ mkdir clone_clasp && cd clone_clasp
$ clasp clone [script id]

すると、 clone_clasp のディレクトリに既存のコードがダウンロードされます。
また、カレントディレクトリがGASプロジェクトの状態で下記コマンドを実行すると、ブラウザが起動し、いつものエディタが表示されます&

$ clasp open

バージョン管理

ここで言うバージョン管理とは、スクリプトのスナップショットのことを指します。
バージョンを追加するには、下記のコマンドを実行します。

$ clasp version "First version"

そうすると、スクリプトのバージョンが追加されます。

また、マニフェストによるデプロイもコマンドで実行することができます。が、この機能はあまり意識したことが無かったので、今後勉強してみようと思います。

clasp deploy [version] "First deployment"

まとめ

今回のアップデートで、GAS開発の方法がガラリと変わる可能性を感じました。clasp無しでは開発ができなくなってしまうかもしれませんね。

以上です!