みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps Scriptでスプレッドシートのデータを配列に格納して操作をする方法をシリーズでお伝えしています。
前回の記事はコチラ。
indexOfメソッド、lastIndexOfメソッドを使って、配列内の検索をする方法をお伝えしました。
さて、これまでお伝えしてきた
- pushメソッド
- spliceメソッド
- indexOfメソッド/lastIndexOfメソッド
など、GASには配列を扱う便利なメソッドがたくさん用意されていますが、より便利な機能を簡単に使いたい!…と思ったときには、どうすれば良いですか?
そんなときには、ライブラリUnderscore for Google Apps Scriptという素敵なものがあるんです。
これまでお伝えしてきた通り、スプレッドシートのデータは配列で扱いたいことが多いですから、使いこなせれば大きな武器になるはず…!
そして、Underscore for GASには配列に限らず、様々な便利関数が多数パッケージ化されています。
ということで、今回はGoogle Apps Scriptで100以上の便利関数を使えるようになる定番ライブラリUnderscore for GASを紹介します!
ライブラリUnderscore for Google Apps Scriptとは
ライブラリとは、ある特定の処理をパッケージ化してまとめたものです。
それらを使うことで、よくある表現や処理などを、ネイティブで記述するよりもシンプルに記述することができるようになります。
以前、GAS向けのライブラリとしては日時を便利にあつかうmoment.jsのGAS版や
チャットワークAPIを簡単に使えるようにしたChatWorkClient for Google Apps Scriptなどを紹介しましたね。
Underscore.jsとは
JavaScriptにはUndersocre.jsという超定番ライブラリがあります。
配列だけでなく、オブジェクト、関数など、非常にカバー範囲の広いライブラリです。
カテゴリとしては、以下6つのカテゴリについて100以上もの便利関数で構成されています。
- コレクション(Collections)
- 配列(Arrays)
- 関数(Functions)
- オブジェクト(Objects)
- ユーティリティ(Utility)
- メソッドチェーンでつなぐ機能(Chaining)
オープンソースとして提供されていて、かつ、ファイルサイズが軽量であることが特徴です。
Underscore for Google Apps Scriptは、Underscore.jsのGAS版ということになります。
そのUnderscoreの機能、実はネイティブでもあるかもよ
一点、注意しなければいけません。
Underscore.jsに含まれている関数のいくつか(というか、わりと多くの関数かも?)については、最新のJavaScript(ES5/ES6)ではネイティブでサポートされた関数がいくつかあります。
Google Apps Scriptでも同様で、例えば前回記事でお伝えしたindexOfメソッドやlastIndexOfメソッドはUnderscore.jsにも含まれているメソッドですが、GASでもネイティブでサポートをされていますので、ライブラリを追加せずとも動作します。
ですから、Underscore.jsのドキュメントに載っていたとしても、それはGASネイティブで実現できるかも知れない、その可能性があるよということを覚えておいてください。
Underscore for GASライブラリを追加する
では、ライブラリUnderscore for GASを追加する方法をお伝えしましょう。
まず、ライブラリはプロジェクトごとに追加をしますので、ライブラリを使いたいプロジェクトについて、スクリプトエディタで開いてください。
メニューから「リソース」→「ライブラリ」です。
開いたウィンドウにて「ライブラリを追加」の欄に以下ライブラリのプロジェクトキーを入力して「追加」とします。
すると「Underscore」についての各種情報が表示されますので、「バージョン」について最新のものを選択下さい。執筆時点では「2」が最新でした。
そして「保存」です。
これにて、このプロジェクトでライブラリUnderscore for GASを使えるようになりました。
ライブラリUnderscore for GASを使ってみる
では、Underscoreライブラリを使えるか試してみましょう。
以下のスクリプトを実行してみてください。
function randomNumber(){ var _ = Underscore.load(); Logger.log(_.random(0,100)); }
実行をしてみて、ログに以下のように出力されていれば成功です。
以下で解説をしていきますね。
randomメソッドで整数の乱数を発生させる
Underscoreライブラリの最大の特徴と言ってもいいのですが、文字通りアンダースコア「_」を使って記述するところにあります。
例えば、整数の乱数を発生させるrandomメソッドがありますが、以下のように書きます。
これで最小値から最大値の間の整数の乱数を発生させることができます。
上記スクリプトでは
Logger.log(_.random(0,100));
としていますので、0から100までの整数を表示させるということになりますね。
JavaScriptで整数の乱数というと、Math.randomメソッドと、Math.floorメソッドを組み合わせて
というような書き方があります。
ですが、Underscoreを使えばもっとシンプルに記述できるというわけです。
loadメソッドでアンダースコアをロードする
さて、Underscore for GASをアンダースコア「_」で使用するには「ロード」という作業をしなければなりません。
上記スクリプトでいうと3行目の部分ですね。
これでアンダースコア「_」が、Underscoreの機能を呼び出す役割を果たすことができるようになるわけです。
まあ、これはおまじない的なものということで、毎回Underscoreの機能を使う前に、記述をよろしくお願いします。
ちなみに、上記スクリプトは
function randomNumber(){ //var _ = Underscore.load(); Logger.log(Underscore.load().random(0,100)); }
としても動きます。
アンダースコア「_」は「Underscore.load()」の代わりっちゅうことですな。
ライブラリUnderscoreGSについて
ちなみに、GASで使えるUnderscoreライブラリとして「UnderscoreGS」というライブラリもあります。
プロジェクトキーはこちらです。
こちらのほうが、ネット上の情報は多いかもしれませんが、こちらは記述の仕方が
Logger.log(underscoreGS._randomString(10));
てな感じ。
「underscoreGS.」っていちいち書くということで、本家Underscore.jsみたいなアンダースコア「」だけの、シンプルでスマートな書き方じゃないのです。
また、次回絶賛お伝えする、超オススメメソッドが使えないので、私はUnderscore for GASのほうを優先的に使っています。
まとめ
以上、多数の便利関数が使えるライブラリUnderscore for Google Apps Scriptについてご紹介しました。
100以上の関数があるので、全てを使いこなすのはなかなか大変ですが、主要どころを抑えるだけでも、これからのGASライフがとっても楽ちんになりそうです。
当ブログでも、オススメのメソッドを順次紹介していきますよ。
さて、次回ですが、このメソッドだけのためにUnderscore for GASを使うと言っても過言ではない超絶便利なものがあるので、それを紹介したいと思います。
どうぞお楽しみに!