cheeriogsとは
GASで使用可能なHTMLをパースできるライブラリ。
Google Apps ScriptだけだとWebサイトのHTMLをgetContentTextを使用してHTMLをテキストで取得して正規表現で抽出しなければならないため、非常に取得しづらい。
cheeriogsを使用すれば$('title').text()とjQueryようなコードで簡単に取得できる。
cheeriogsを使用するには
スクリプトエディタでリソース => ライブラリを選択してAdd a libraryに「1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0」を追加したあと、最新バージョンを選択して保存を押せば使えるようになる。
GASでサムネイル画像とaltを取得
Google Apps Scriptで画像とaltを取得する場合は以下のようなコードになる。
今回サンプルとして総務省のWebサイトを利用したためgetContentText('shift-jis')となっているが、UTF-8であればgetContentText()で問題ない。
画像のsrcは絶対パスではなく相対パスの可能性もあるため、IMAGE関数で画像を表示できるように相対パスは絶対パスにする必要がある。
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet()
const url = sheet.getRange('B1').getValue()
const content = UrlFetchApp.fetch(url).getContentText('shift-jis')
const $ = Cheerio.load(content)
const $img = $('img')
const domain = url.split('/')[2]
sheet.getRange("A2:C1000").clearContent();
if ($img.length) {
$img.each((i, v) => {
const src = $(v).attr('src')
const srcUrl = /^https:/.test(src) ? src : 'https://' + domain + src
sheet.getRange(i + 2, 1).setValue($(v).attr('src'))
sheet.getRange(i + 2, 2).setFormula('=IMAGE("' + srcUrl + '")')
sheet.getRange(i + 2, 3).setValue($(v).attr('alt'))
})
} else {
sheet.getRange(2, 1).setValue('imgタグは存在しません。')
}
}
Google Apps Scriptで画像とaltを取得するサンプル