clasp - Apps Script CLI

1. はじめに

Apps Script CLI(clasp)は、ローカルで Apps Script プロジェクトの作成、編集、デプロイを行うことができるツールです。コマンドラインからスプレッドシート、ドキュメント、フォーム、スライドなどのサービス向けのウェブアプリやアドオンを作成し、公開することができます。Apps Script で開発するには、script.google.com を使用する方法と、コンピュータでローカルに行う方法の 2 つがあります。ここでは後者の方法、Apps Script 用のコマンドライン ツールである clasp を使用する方法を学びます。

機能

  • ローカルで開発します。clasp を使用すると、コンピュータ上でコードを記述して、完成後に Apps Script にアップロードできます。既存の Apps Script プロジェクトをダウンロードして、ローカルで編集することも可能です。ローカルにダウンロードしたコードは、git など、お好みの開発ツールを使用して Apps Script プロジェクトの作業を進めることができます。
  • デプロイ バージョンの管理。プロジェクトで複数のデプロイの作成、更新、表示を行うことができます。
  • コードを構造化します。clasp では、script.google.com 上のフラットなプロジェクトが自動的にフォルダに変換されます。次に例を示します。
# On script.google.com:
├── tests/slides.gs
└── tests/sheets.gs

# Locally:
├── tests/
│   ├─ slides.gs
│   └─ sheets.gs

学習内容

この Codelab では、clasp で次の 3 つの基本的な操作を行う方法を説明します。

  • 新しい Apps Script プロジェクトを作成する方法
  • 既存のプロジェクトのクローン作成、pull、push を行う方法
  • スクリプトのデプロイを管理する方法

2. はじめに

CLI のダウンロード

Apps Script CLI(clasp)では、Node.js がインストールされている必要があります。こちらから Node.js をインストールします。

Node をインストールしたら、CLI をグローバルにインストールします(エイリアス clasp を使用します)。

npm i @google/clasp -g

3. Apps Script API を有効にする

Clasp を使用する前に、Apps Script IDE で Google Apps Script API を有効にする必要があります。

4. ログイン

ログイン

clasp を試してみましょう。覚えておく必要があるコマンドは clasp だけです。

clasp

コマンドライン ツールを使用する前に、ログインする必要があります。次のコマンドを実行します。

clasp login

SSH を使用している場合:

clasp login --no-localhost

この時点で、Google へのログインを求められます。CLI で作成するプロジェクトはすべて、この Google アカウントに関連付けられます。

5. 新しいプロジェクトを作成する

スタンドアロン プロジェクトを作成する

まず、次のコマンドを使用してスタンドアロンの Google Apps Script プロジェクトを作成します。

mkdir clasp_codelab;
cd clasp_codelab;
clasp create --title "Clasp Codelab"  --type standalone;

これで、「clasp_codelab」フォルダに Apps Script プロジェクトを作成できました。

(もう 1 つの方法)既存のプロジェクトのクローンを作成する

Google スライド アドオン用のコンテナ バインド スクリプトを作成してみましょう。

それには、slides.google.com にアクセスして新しいプレゼンテーションを作成します。プレゼンテーションの名前を「clasp Codelab Test」に変更します。スライドのメニューバーで、[拡張機能] メニューから [Apps Script] を選択します。

script.google.com で Apps Script プロジェクトが開きます。

プロジェクト用の新しいディレクトリを作成し、そのディレクトリに cd します。

mkdir clasp_codelab_test
cd clasp_codelab_test

プロジェクトのクローンを作成するには、Script ID が必要です。この ID は、Apps Script プロジェクトの URL の /projects/ の後にあります。値をコピーして、次のコマンドに貼り付けます。

clasp clone <scriptID>

出力は次のようになります。

4e3b128f4dcf6467.gif

これで、プロジェクトが現在のディレクトリにダウンロードされました。お好みのエディタを使って Code.gs の内容を表示します(これ自体は空の関数です)。

6. ファイルの pull と push

script.google.com でコードを編集する

プロジェクトのクローンを作成できたので、ファイルの pull と push を行う方法を確認しましょう。script.google.com を使用してクラウド上で編集し、ローカルのコンピュータに pull する方法を、手順を追って説明します。まず、クラウドでスクリプトを開きます。

clasp open-script

オンライン エディタを開いたら、オンラインでコードを編集します。その後、clasp を使ってコードを取得します。

新しい Apps Script ファイルを作成するには、エディタの左側にある [ファイル] の横にある [ファイルを追加] ファイルを追加する > [スクリプト] をクリックします。utils/strings という名前を入力します。新しく作成されたファイル utils/strings.gs で、コードを次のものに置き換えます。

var world = "世界";

Code.gs で、既存のコードを次の内容に置き換えます。

function hello() {
  Logger.log("Hello, " + world);
}

上部の保存アイコン(保存)をクリックします。

関数を実行するには、エディタの上部にある関数のプルダウン リストから hello を選択し、[実行] をクリックします。

実行ログの下部に挨拶が表示されます。

ローカルでコードを編集する

先ほどプロジェクトのクローンを作成したコマンドラインに戻ります。このコードは、オンライン エディタと同期されていない状態です。これを修正するには、オンライン プロジェクトからコードを pull します。

clasp pull

ここで、コードに戻ります。utils 用のフォルダができているはずです。clasp CLI により、スラッシュ文字 / がローカル ファイルシステムのフォルダに自動的に変換されます。

お好きなテキスト エディタで、util/strings.gs を開き、変数名を world から mondo に変更します。また、Code.gs も、worldmondo に変更して更新します。更新したコードを script.google.com で更新するには、編集済みのコードを push します。

clasp push

これで完了です。コードは script.google.com で更新されました。

7. バージョン管理とデプロイ

clasp を使用すると、バージョンやデプロイを管理できます。まず、用語を少し確認しておきましょう。

  • バージョン: スクリプト プロジェクトの「スナップショット」です。バージョンは、デプロイに使用される読み取り専用のブランチと考えることができます。
  • デプロイ: スクリプト プロジェクト(多くの場合、アドオンまたはウェブアプリ)の公開版のリリースです。バージョン番号が必要です。

スクリプトのバージョンを作成します。

clasp create-version "First version"

[version] の代わりに、作成したバージョン文字列を使用して、スクリプトをデプロイできます。

clasp create-deployment 1 "First deployment"

clasp deploy コマンドでは、マニフェストが確認され、新しいバージョンが付与されたデプロイが作成されます。これで、コードが実行可能ファイルとしてデプロイされました。詳しくは、デプロイガイドをご覧ください。

8. これで完了です。

Apps Script CLI は、Apps Script プロジェクトの管理に役立つシンプルなツールです。

学習した内容

  • 新しい Apps Script プロジェクトを作成する方法
  • 既存のプロジェクトのクローン作成、push、pull を行う方法
  • スクリプトのデプロイを管理する方法

Clasp は GitHub で入手でき、新しい機能やパッチを受け付けています。

これらの点に注意して、独創的なアプリケーションを開発してください。