GASで使えるライブラリおすすめ6選!追加方法と使い方を紹介するよ!

GoogleAppsScriptをゴリゴリ書いて面倒な作業を効率化したり自動化したりしているのだろうか。それもこれからGASを使いこんでいって何かを始める予定だろうか。なんにせよGASを使うには知っておいた方が良いこともあるだろう、例えばライブラリの存在とかね。

そこで今回はGASで使うことのできるおすすめのライブラリっていうやつを見ていきたい。いくつか紹介していくから何か気になるものがあったら使ってみるといいかもしれない。

GASのライブラリ追加方法

GASでライブラリを追加するにはライブラリの+ボタンをクリックして、そのライブラリのスクリプトIDを入力して検索すれば追加することができる。

スクリプトIDってなんだよ?ってところだけど、それぞれのライブラリにはスクリプトIDっていうのが割り当てられている。

これを入力して検索してみると該当のライブラリが表示される。

だから使いたいライブラリがあったらそのライブラリのスクリプトIDが分かればいいってことだね。

GASのライブラリをどこで検索するのか

GASのライブラリってちゃんとまとまっているところなくないですか?GoogleAppsScriptのLibrariesを見てもGASのライブラリの一覧は載っていないし、いろいろ検索しても出てこないしライブラリを誰が作って誰が公開しているのが分からん。だけどGAS (Google App Script) の Moment.js の出どころを調べる #gasの記事の中でちょっと参考になりそうなことが載っていますね。

GAS Librar Managementを見てみると、いろいろ載っているけど見にくいですね。スクリプトIDも載っていないしうーん・・・いろいろリンクを見てみたりするとスプレッドシートに多少まとまっていたりするけどこれも結構よく分からない・

LibraryApp.keys

More Google Apps Script Libraries

More Google Apps Script Libraryの方で何か気になるライブラリがあったらSourceから一応スクリプトIDは分かったりする。

どういう使い方をするのかといったことはMoreInfoの列に掲載されているリンクから見てみると良さそう。ただ今は使えないものもあったりする。というよりここに載っているのちょっと試したけど使えないの多くないか・・・普通に検索して他のものも見た方が良さそう

GASで使えるおすすめライブラリ6選

ライブラリはいろいろあると思うけど、正直どれが便利なのかなあ?という所感ですよね。なのでここではその中から良さそうなライブラリを紹介したいと思う。

SSheetDB

 スクリプトID: 1m-mnNjwCIxUCgoZxTeHpvICFyntLCs52IjSxfHGA-6MbBiym441opQ21

これはスプレッドシートをデータベースのように扱うことのできるライブラリ。テーブルを作成したりデータを挿入したり削除したりSQLのように書くことができる。例えばこんな感じでテーブルを作成したりデータを挿入したりするコードを書いて実行してみる。

function createDb() {
  SSheetDB.newDB("スプレッドシートでDB");
}

function createTable() {
  var db = SSheetDB.open("スプレッドシートのID");
  db.createTable("users",{
    "姓" : "",
    "名" : "",
    "性別" : ""
  });
}

function insert() {
  var db = SSheetDB.open("スプレッドシートのID");
  var users = db.table("users");

  users
  .insert([
    {
    "姓" : "鈴木",
    "名" : "太郎",
    "性別" : "男"
    }]
  )
}

すると新しくスプレッドシートが作られ、データベースのテーブルのようにデータが表示されている。

GASとスプレッドシートの連携して何かするっていうのは以下のような記事でもやったけど、これはコードをSQLライクに書けるのがいいね。

SQLを書いたことがある人なら、直感的に書くことができると思う。利用方法についてはこちらの記事で作者が書かれているので気になる人は見てみるといいですよ。

GoogleApps Script用ライブラリ、SSheetDB/JsonDBを公開します

Underscore.js

 スクリプトID: 1PcEHcGVC1njZd8SfXtmgQk19djwVd2GrrW1gd7U5hNk033tzi6IUvIAV

Underscoreは配列操作やオブジェクトの操作を扱う関数が提供されるけど、今のJavaScriptなら別になくてもいいんじゃないか?とも正直思ってしまうが一応載せておこう。普通にUnderScore使わなくてもmapやfilterなんかは備わっているしね。

function main() {
  array = ["大根", "人参", "ほうれんそう"]

  // 普通にmap
  array.map(veg => {
    console.log(veg)
  })

  //Underscoreでmap
  var _ = Underscore.load();
  _.map(array, function(veg) {
    console.log(veg)
  });
}

一昔前ならあった方が便利なのかもしれないけど、普通に書く分にはそこまで困らなそうな予感。何か書くのが面倒なのがあれば、それがUnderscoreで実現できないか調べてみるといいかもしれない。

day.js

 スクリプトID: 1ShsRhHc8tgPy5wGOzUvgEhOedJUQD53m-gd8lG2MOgs-dXC_aCZn9lFB

日付操作のライブラリは何か欲しいですよね。DateオブジェクトをGASでは使うことができるけど、少々扱いが面倒だからday.jsなんかを使おう。moment.jsも一応使えるけど、day.jsの方が良いと思うよ。moment.jsはレガシープロジェクトになってしまったしね。

day.jsは記述が簡単で試しに以下のようなコードを書いて実行してみるといろんな日付を表示することができる。

function main() {
  const day = dayjs.dayjs()
  console.log(dayjs.dayjs())
  console.log(day.year() + "年")
  console.log(day.month() + "月")
  console.log(day.date() + "日")
  console.log(day.add(1, 'day').subtract(1, 'year').year(2009).toString())
}

日付を扱いたいときには使ってみると便利だと思う。day.jsでどんなことができるかはday.jsを見てみるといいですよ。

BetterLog

 スクリプトID: 1DSyxam1ceq72bMHsE6aOVeOl94X78WCwiYPytKi7chlg4x5GqiNXSw0l

ログ出力を良い感じにやってくれるライブラ。デフォルトでもログ出力はできるんだけど、BetterLogはログをスプレッドシートに書き出したりしてくれる。

やり方は簡単で、BetterLogを追加したらこんな記述をすればいいだけ。IDはスプレッドシートのURLを突っ込んでやればいい。

function main() {
  Logger = BetterLog.useSpreadsheet('スプレッドシートのID'); 
  Logger.log("ログ書くよおおおおおお");
  Logger.log("書き込めるかな?");
  Logger.log("書き込めているうううう");
  Logger.log("うううううう");
  Logger.log("終わり");
}

実行するとスプレッドシートにログが出力されていますね。

スプレッドシートってやっぱり便利ですねえ。データベースにすることもできるし、ログ出力させることもできるし使い方によってかなり便利。

ImgAppライブラリ

 スクリプトID: 1T03nYHRho6XMWYcaumClcWr6ble65mAT8OLJqRFJ5lukPVogAN2NDl-y

ImgAppは画像をリサイズしたり切り取りしたりすることのできるライブラリ。GASで画像を編集したいときなんかには使えそうなやつ。試しにGoogleDriveにある画像のリサイズをやってみると、こんな感じでできる。横幅を400pxにしてリサイズしたものを保存するっていうコード。

function resize() {
  var res = ImgApp.doResize("ファイルID", "400");
  var folder = DriveApp.getFolderById("フォルダID");
  folder.createFile(res.blob.setName("resized-file"));
}

実行するとリサイズされた画像がちゃんと作られている。サイズを見てみても指定した400pxの横幅になっていますね。

ちなみに今回はGoogleDriveから取得した画像をリサイズしたけど、その際のファイルIDの指定はGoogleドライブにある写真を右クリックしてリンクを取得から見られるIDから取ってきたよ。

画像の切り取りなんかもできるから、気になったらGithubのページを見てみるといいですよ。

ImgApp

Parser

 スクリプトID: 1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw
Parserはスクレイピングしてデータを取得したいときなんかに使えるライブラリ。以前Parserを使って、このサイトの記事のタイトルを取得するみたいなことをやったんだけど、ちゃんととることができました。

function myFunction() {
  const url = "";
  const html = UrlFetchApp.fetch(url).getContentText();
  let title_list = Parser.data(html)
  .from('')
  .to("")
  .iterate()

  let titles = []
  title_list.forEach(function(title){
    titles.push(title.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,''))
  })

  const ss = SpreadsheetApp.openById("");
  const sheet = ss.getSheetByName("");

  titles.forEach(function(title){
    let lastRow = sheet.getLastRow()
    sheet.getRange(lastRow + 1, 1).setValue(title)
  })  
}

まとめ

GoogleAppsScriptで使えるライブラリはいくつかあるけど、今回紹介したのは以下の6つ。

  • SSheetDB
  • Underscore.js
  • day.js
  • BetterLog
  • ImgAppライブラリ
  • Parser

何か気になるものがあったら使ってみてね。

GASを本格的に学びたいならスクールで学ぶっていう手もあります。GASのコースがあるなんて珍しいね。