やること
- GASでHTMLを取得
- HTMLをDOMにパースしてセレクターを使ってテキストを取得する
- SpreadSheetの特定のセルに値をセットする
GASでHTMLを取得
UrlFetchAppクラスのfetchを使う
var url = [サイトのURL]; var response = UrlFetchApp.fetch(url); var html = response.getContentText('UTF-8');
HTMLをDOMにパースしてセレクターを使ってテキストを取得する
結構GASで使えるDOM Paserを探すのに苦労したが、こちら記事で紹介されているcheerioのGAS版があって助かった
cheerio-gasifyをつくった - 3846masa's memo
使いかたはcheerio
と一緒で、querySelectorAll
で使った場合の以下の処理を
var output = []; document.querySelectorAll("#datatable .data-row").forEach(row => { var list = []; row.querySelectorAll(".col-xs-3 .row").forEach(childRow => { list.push(childRow.textContent) }) row.querySelectorAll(".col-xs-8 .row .details").forEach(childRow => { list.push(childRow.textContent) }) output.push(list); });
GASでこのように書くことができる
var url = [サイトのURL]; var response = UrlFetchApp.fetch(url); var html = response.getContentText('UTF-8'); var cheerio = cheeriogasify.require('cheerio'); var $ = cheerio.load(html); $("#datatable .data-row").each(function () { var list = []; $(".col-xs-3 .row", this).each(function () { list.push(this.text()); }) $(".col-xs-8 .row .details").each(function () { list.push(this.text()); }) output.push(list); }
あとはセルに値をセットして終わり
その3へ