Google Apps Scriptで必ず知っておくべき7つのライブラリ

ライブラリとは

作成された関数を別のプロジェクトで読み込んで使用できる機能です。

例えばWebサイトでLodashを使用する場合はCDNやnpm installなどで読み込んで使用しますが、GAS (Google Apps Script) ではスクリプトエディタのライブラリからスクリプトIDを指定して読み込みます。

GASのライブラリはライブラリ名から検索できないので、スクリプトIDを知らないと使用できないので不便です。

Google Apps Scriptで必ず知っておくべき7つのライブラリ
ライブラリはスクリプトIDを入力して検索する

この記事ではGoogle Apps Scriptで必ず知っておくべき7つのライブラリの使い方および使用するためのスクリプトIDを記載しています。

LodashGS

LodashをGASで使用するためのライブラリ。

スクリプトID

1SQ0PlSMwndIuOAgtVJdjxsuXueECtY9OGejVDS37ckSVbMll73EXf2PW

Underscore.jsのライブラリを紹介しているWebサイトが多いですが、LodashはUnderscoreの上位互換なので、Lodashを使用したほうが良いです。

Lodashはほぼ最新のバージョンが使用できます。

function myFunction() {
  const _ = LodashGS.load()
  console.log(_.VERSION)
  // 4.17.20
}

Lodashの使い方は公式サイトを参照してください。

cheeriogs

jQueryのような書き方でHTMLを操作できるライブラリ。

スクリプトID

1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0

cheeriogsを使用すれば$('title').text()のようなjQuery風のコードで簡単に取得できる。

function myFunction() {
  const url = 'https://ja.wikipedia.org'
  const content = UrlFetchApp.fetch(url).getContentText()
  const $ = Cheerio.load(content)
  console.log($('title').text())
  // Wikipedia
}

Google Apps ScriptとcheeriogsでWebサイトのtitleなどを取得する方法

dayjs

Day.js (日付操作) ライブラリ

スクリプトID

1ShsRhHc8tgPy5wGOzUvgEhOedJUQD53m-gd8lG2MOgs-dXC_aCZn9lFB

使い方はDay.js 公式サイトを参照してください。

function myFunction() {
  const day = dayjs.dayjs(1669161600000)
  console.log(day.format("YYYY/MM/DD"))
  // => 2022/11/23
}

ImgApp

画像のサイズなどの取得やリサイズなどの編集ができるライブラリ。

スクリプトID

1T03nYHRho6XMWYcaumClcWr6ble65mAT8OLJqRFJ5lukPVogAN2NDl-y

getSize(), doResize(), updateThumbnail(), editImage()の4つのメソッドがあって、それぞれの主な使い方は以下の通り。

getSize()画像の幅、高さ、容量、ファイルタイプを取得
doResize()画像のリサイズ
updateThumbnail()Googleドライブ上のファイルのサムネイルを更新
editImage()画像の切り抜きや統合などの編集

BetterLog

スプレッドシートへログを記録できるライブラリ。

GASはconsole.logで実行ログに結果を表示できるが、ChromeデベロッパーツールのConsoleのPreserve logのようにログの結果を保持できない。

BetterLogを使用すれば簡単にシートにログを記録できる。

スクリプトID

1DSyxam1ceq72bMHsE6aOVeOl94X78WCwiYPytKi7chlg4x5GqiNXSw0l
function myFunction() {
  const now = new Date()
  Logger = BetterLog.useSpreadsheet('your-spreadsheet-key')
  Logger.log(now)
}

初回はLogというシートが新規作成されてからログが記録される。

以降は実行するたびにログがLogのシートに記録されます。

BetterLog

spreadsheets-sql

シートのデータをSQLのように操作できるライブラリ。

スクリプトID

17p1ghyOkbWOhdE4bdBFhOXL079I-yt5xd0LAi00Zs5N-bUzpQtN7iT1a
function getSheetData() {
  const id = '1ito0xKhSM0J6Q_j00Ucp4xMO2fOcEFFQllV2hxyZYd4'
  const name = 'シート1'
  const targetSheet = SpreadSheetsSQL.open(id, name)
  const result = targetSheet.select(['id', 'name', 'age']).filter('age >= 18').result()
  console.log(result)
}

spreadsheets-sqlは「*」で全指定ができないので、1行目をgetValuesで取得したほうがスマートです。

function getSheetAllData() {
  const id = '1ito0xKhSM0J6Q_j00Ucp4xMO2fOcEFFQllV2hxyZYd4'
  const name = 'シート1';
  const ss = SpreadsheetApp.openById(id).getSheetByName(name)
  const lastCol = ss.getLastColumn()
  const range = ss.getRange(1, 1, 1, lastCol)
  const selectAll = range.getValues().flat()
  const targetSheet = SpreadSheetsSQL.open(id, name)
  const result = targetSheet.select(selectAll).filter('age >= 18').result()
  console.log(result)
}

spreadsheets-sql sample

SlackApp

Google Apps Script用のSlack APIライブラリ。

スクリプトID

1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

単純にSlackにテキストを送信させるだけならIncoming Webhookを使用したほうが簡単です。