Google Apps Scriptで100以上の便利関数が使える定番ライブラリUnderscore for GAS

★気に入ったらシェアをお願いします!


underscore.js

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptでスプレッドシートのデータを配列に格納して操作をする方法をシリーズでお伝えしています。

前回の記事はコチラ。

Google Apps Scriptで配列の検索をするindexOfメソッドとlastIndexOfメソッド
Google Apps Scriptでスプレッドシートのデータを配列に格納して操作をする方法をお伝えしています。今回は配列を検索するindexOfメソッド、lastIndexOfメソッドの使い方です。

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版や

日付&時刻の便利ライブラリ「Moment.js」をGoogle Apps Scriptで使う方法
Google Apps Scriptの日付&時刻ですが、Moment.jsライブラリで、非常に簡単に取り扱えます。今回はライブラリの追加方法とmomentオブジェクトの生成についてお伝えしていきます。

チャットワークAPIを簡単に使えるようにしたChatWorkClient for Google Apps Scriptなどを紹介しましたね。

GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信
以前、Googleアナリティクスの日次レポートを自動記録する方法をお伝えしましたが、今回はさらに発展をさせてそれを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を追加する方法をお伝えしましょう。

まず、ライブラリはプロジェクトごとに追加をしますので、ライブラリを使いたいプロジェクトについて、スクリプトエディタで開いてください。

メニューから「リソース」→「ライブラリ」です。

スクリプトエディタでライブラリを選択

開いたウィンドウにて「ライブラリを追加」の欄に以下ライブラリのプロジェクトキーを入力して「追加」とします。

プロジェクトキー:M3i7wmUA_5n0NSEaa6NnNqOBao7QLBR4j

GASでプロジェクトキーを入力して追加

すると「Underscore」についての各種情報が表示されますので、「バージョン」について最新のものを選択下さい。執筆時点では「2」が最新でした。

そして「保存」です。

GASでUnderscoreライブラリを追加して保存

これにて、このプロジェクトでライブラリUnderscore for GASを使えるようになりました。

ライブラリUnderscore for GASを使ってみる

では、Underscoreライブラリを使えるか試してみましょう。

以下のスクリプトを実行してみてください。

実行をしてみて、ログに以下のように出力されていれば成功です。

GASでUnderscoreのrandomメソッドを使った結果

以下で解説をしていきますね。

randomメソッドで整数の乱数を発生させる

Underscoreライブラリの最大の特徴と言ってもいいのですが、文字通りアンダースコア「_」を使って記述するところにあります。

例えば、整数の乱数を発生させるrandomメソッドがありますが、以下のように書きます。

_.random(最小値, 最大値)

これで最小値から最大値の間の整数の乱数を発生させることができます。

上記スクリプトでは

としていますので、0から100までの整数を表示させるということになりますね。

JavaScriptで整数の乱数というと、Math.randomメソッドと、Math.floorメソッドを組み合わせて

Math.floor(Math.random()*整数))

というような書き方があります。

Google Apps Scriptで乱数を使っておみくじプログラムを作る
今回はGoogle Apps Scriptで乱数を使用しておみくじを作る方法についてお伝えしていきます。乱数の発生、小数点の切り捨て、配列の要素数を求めるなど、あちこちで使えるテクニックが満載ですよ!

ですが、Underscoreを使えばもっとシンプルに記述できるというわけです。

loadメソッドでアンダースコアをロードする

さて、Underscore for GASをアンダースコア「_」で使用するには「ロード」という作業をしなければなりません。

上記スクリプトでいうと3行目の部分ですね。

var _ = Underscore.load();

これでアンダースコア「_」が、Underscoreの機能を呼び出す役割を果たすことができるようになるわけです。

まあ、これはおまじない的なものということで、毎回Underscoreの機能を使う前に、記述をよろしくお願いします。

ちなみに、上記スクリプトは

としても動きます。

アンダースコア「_」は「Underscore.load()」の代わりっちゅうことですな。

ライブラリUnderscoreGSについて

ちなみに、GASで使えるUnderscoreライブラリとして「UnderscoreGS」というライブラリもあります。

プロジェクトキーはこちらです。

プロジェクトキー:MiC3qjLYVUjCCUQpMqPPTWUF7jOZt2NQ8

こちらのほうが、ネット上の情報は多いかもしれませんが、こちらは記述の仕方が

てな感じ。

「underscoreGS.」っていちいち書くということで、本家Underscore.jsみたいなアンダースコア「」だけの、シンプルでスマートな書き方じゃないのです。

また、次回絶賛お伝えする、超オススメメソッドが使えないので、私はUnderscore for GASのほうを優先的に使っています。

まとめ

以上、多数の便利関数が使えるライブラリUnderscore for Google Apps Scriptについてご紹介しました。

100以上の関数があるので、全てを使いこなすのはなかなか大変ですが、主要どころを抑えるだけでも、これからのGASライフがとっても楽ちんになりそうです。

当ブログでも、オススメのメソッドを順次紹介していきますよ。

さて、次回ですが、このメソッドだけのためにUnderscore for GASを使うと言っても過言ではない超絶便利なものがあるので、それを紹介したいと思います。

Google Apps Scriptで二次元配列の行と列を入れ替える方法とその革命的な効果
Google Apps Scriptでスプレッドシートのデータは二次元配列として操作できますが、列方向に検索したいときなどはUnderscoreのzipメソッドで行と列を入れ替えると革命的に便利です。

どうぞお楽しみに!

連載目次:GASで5分の壁と戦うための配列を扱うテクニック

Google Apps Scriptでは配列操作が非常に重要です。というのも、SpreadsheetサービスのAPIを使えば使うほど、「Google Apps Scriptの5分の壁」にぶつかるからです。このシリーズでは、GASでスプレッドシートのデータを配列に格納して処理をする様々なテクニックをお伝えします。
  1. Google Apps Scriptで配列を使ってスプレッドシートにデータ行を追加する方法
  2. Google Apps Scriptでスプレッドシートにデータ行を挿入する2つの方法
  3. Google Apps Scriptでスプレッドシートの行を削除する2つの方法
  4. Google Apps Scriptで配列の検索をするindexOfメソッドとlastIndexOfメソッド
  5. Google Apps Scriptで100以上の便利関数が使える定番ライブラリUnderscore for GAS
  6. Google Apps Scriptで二次元配列の行と列を入れ替える方法とその革命的な効果