[Google Apps Script] 指定したページのHTMLをスクレイピングする方法

仕様

  • 対象のページの HTML をシンプルに返すだけ
  • HTML から JS 経由で使用する
    → CORS 回避のため jsonp

実装内容

GAS の内容(特別エラーハンドリングなどは行っていない)

function scraping(url) {
  if (!url) return null;

  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText("UTF-8");

  return html;
}

function doGet(e) {
  var result = {
    data: scraping(e.parameter.url),
  };

  var responseText = e.parameter.callback + "(" + JSON.stringify(result) + ")";

  var out = ContentService.createTextOutput();
  out.setMimeType(ContentService.MimeType.JAVASCRIPT);
  out.setContent(responseText);

  return out;
}
パラメータ sample
url
対象とするページの URL
https://script.google.com/HOGEHOGE/exec?url=https://example.jp/

クライアントからの取得方法

jsonp の扱いが面倒なので jQuery でサンプルコードを記載。

$.ajax({
  type: "GET",
  url: "https://script.google.com/HOGEHOGE/exec",
  data: {
    url: "https://example.jp/",
  },
  dataType: "jsonp",
  success: function (jsonp) {
    console.log(jsonp.data);
  },
});