3分でわかる!claspでGAS開発を効率化する方法

GAS のclaspがどうたらこうたらって係長が話してたんだけど…なんのことだろう?
猫男
猫男
catman
catman
よし、catmanが、スプレッドシートと連携させてGASを効率的に開発するための「clasp」について教えてやろう。

GASのclaspとは何か?

まずは、claspについて説明しよう。

 

claspとは、

Command Line Apps Script Projects

の略だ。単刀直入にいえば、

ローカル環境でGASを開発するためのコマンドラインツール

ってわけだな。

Google の開発者が中心となって開発・公開しているオープンソースだから、まあつまり、Google公式の CLI ツールさ。

 

えっ、なぜclaspを使うのかだって?

もちろん、GASをブラウザのエディタで直接編集するのも悪くはない。

だが、claspを使うことで、以下のような利点があるぞ。

  • バージョン管理が容易になる
  • 複数のファイルを扱いやすい
  • エディタの選択肢が広がる

GASのclaspのインストールから始める

claspを使うためには、まずNode.jsをインストールしておく必要がある。その上でclaspをインストールする流れだ。

Node.jsのインストール

最初に、公式サイトからNode.jsをダウンロードし、インストールしよう。

Node.jsにはnpmというパッケージマネージャが含まれているので、それを利用する。

えっ、自分のPCにNode.jsが入っているかわからない?

そんなときは、


node -v

で確認してみよう。

claspのインストール

claspをインストールするコマンドは以下の通りだ。

 npm install -g @google/clasp 

このコマンドを実行すると、claspがグローバルにインストールされる。

added 258 packages in 25s

77 packages are looking for funding
run `npm fund` for details

このようなメッセージが出ればインストール成功だ。

Googleにログイン

インストール成功したら、次はGoogleアカウントでログインするぞ。次のコマンド実行してくれ。


clasp login

すると、ブラウザのウインドウが立ち上がって、色々と同意を迫られる。

無事に最後までやり遂げると、

Logged in! You may close this page.

と出るはずだ。

これで準備が整った。

 

スプレッドシートとGASを連携する

さて、次はGASスクリプトをスプレッドシートにデプロイしてみよう。

プロジェクト作成

まず、claspを使って新しいプロジェクトを作成しよう。

 clasp create --type sheets --title "Spreadsheet Automation" 

このコマンドで、新しいGASプロジェクトが作成される。

–type は以下のいずれかを指定できるぞ。

  • standalone(スタンドアロン)
  • docs, sheets, slides, forms(それぞれのコンテナバインド型)

今回はsheetsだからスプレッドシートと、それに紐づくスクリプトが自動生成される。

 

えっ、次のエラーが出た?

User has not enabled the Apps Script API. Enable it by visiting https://script.google.com/home/usersettings then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

そんなときはおとなしくメッセージに書いてある通りに「https://script.google.com/home/usersettings」にいってみよう。

 

そこでGoogle Apps Script API をオンにすればいいんだ。

無事に成功すると、

  • .clasp.json
  • appsscript.json

の2つのファイルが現在のディレクトリに生成されるだろう。

 

スクリプトを作成

このままだと、ローカルで編集するスクリプトがまだ存在していない。

だから、拡張子「.gs」を持つファイルを作ってあげよう。

例えば、

Code.gs

を作ろう。

 

スプレッドシートへのアクセス

次に、スプレッドシートのデータにアクセスするための簡単なGASコードを書いてみよう。


function readData() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  Logger.log(data);
} 

このスクリプトでアクティブなスプレッドシートの全データを取得してログに出力する。

スクリプトをデプロイ

claspを使用してスクリプトをデプロイしてみよう。

clasp push

「clasp push」でGoogleのサーバーにスクリプトをアップロードできるぞ。

成功すると、さっき作られたシートのスクリプトにreadData()の関数が反映されているはずだ。

なるほど!スプレッドシートのデータを自由に扱えるようになるんですね!
猫男
猫男

まとめ:claspで効率的にGAS開発を進める

  • claspを使ってローカル環境でGASを開発しよう。
  • バージョン管理や複雑なプロジェクトに強い。
  • スプレッドシートとの連携も容易に行える。
catman
catman
これで君もスプレッドシートとGASの達人になれる道が見えてきたさ。

 

練習問題

claspで新しく「スプレッドシートと連携する」プロジェクトを作り、スプレッドシートのデータを「シート名」と共に取得しログに出力するスクリプトを書いてみよう。

 

解答・解説

新しいプロジェクトを作成し、以下のスクリプトを作成・実行します。


function logSheetData() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const sheetName = sheet.getName();
  const data = sheet.getDataRange().getValues();
  Logger.log("Sheet Name: " + sheetName);
  Logger.log(data);
}

このスクリプトは、アクティブなシートの「シート名」を取得し、シート内の全データをログに出力する。getName()メソッドでシート名を取得し、getDataRange().getValues()でデータを二次元配列として取得できる。