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も載っていないしうーん・・・いろいろリンクを見てみたりするとスプレッドシートに多少まとまっていたりするけどこれも結構よく分からない・
More Google Apps Script Libraries
More Google Apps Script Libraryの方で何か気になるライブラリがあったらSourceから一応スクリプトIDは分かったりする。
どういう使い方をするのかといったことはMoreInfoの列に掲載されているリンクから見てみると良さそう。ただ今は使えないものもあったりする。というよりここに載っているのちょっと試したけど使えないの多くないか・・・普通に検索して他のものも見た方が良さそう。
GASで使えるおすすめライブラリ6選
ライブラリはいろいろあると思うけど、正直どれが便利なのかなあ?という所感ですよね。なのでここではその中から良さそうなライブラリを紹介したいと思う。
SSheetDB
これはスプレッドシートをデータベースのように扱うことのできるライブラリ。テーブルを作成したりデータを挿入したり削除したり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
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
日付操作のライブラリは何か欲しいですよね。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
ログ出力を良い感じにやってくれるライブラリ。デフォルトでもログ出力はできるんだけど、BetterLogはログをスプレッドシートに書き出したりしてくれる。
やり方は簡単で、BetterLogを追加したらこんな記述をすればいいだけ。IDはスプレッドシートのURLを突っ込んでやればいい。
function main() {
Logger = BetterLog.useSpreadsheet('スプレッドシートのID');
Logger.log("ログ書くよおおおおおお");
Logger.log("書き込めるかな?");
Logger.log("書き込めているうううう");
Logger.log("うううううう");
Logger.log("終わり");
}
実行するとスプレッドシートにログが出力されていますね。
スプレッドシートってやっぱり便利ですねえ。データベースにすることもできるし、ログ出力させることもできるし使い方によってかなり便利。
ImgAppライブラリ
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のページを見てみるといいですよ。
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のコースがあるなんて珍しいね。