ライブラリとは
作成された関数を別のプロジェクトで読み込んで使用できる機能です。
例えばWebサイトでLodashを使用する場合はCDNやnpm installなどで読み込んで使用しますが、GAS (Google Apps Script) ではスクリプトエディタのライブラリからスクリプトIDを指定して読み込みます。
GASのライブラリはライブラリ名から検索できないので、スクリプト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のシートに記録されます。
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)
}
SlackApp
Google Apps Script用のSlack APIライブラリ。
スクリプトID
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
単純にSlackにテキストを送信させるだけならIncoming Webhookを使用したほうが簡単です。