Ich habe hunger

あふりかエンジニア、アフリカ向けのB2BのSaaSを開発する

Google Apps Scriptでスクレイピングしてみた

最近、周りにGoogle Apps Scriptを触ってる人が増えてきたので

ちょっと触ってみようと思いました。

作るもの

Spreadsheetで入力されたURLを読みむ。
それぞれのURLのページのタイトルを取得して
URLの列のとなりにタイトルを書き込む。

コード

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var url_column = 1;
var column_num = sheet.getLastRow();

function titleGetter(){
  var results = new Array();
  
  urls = sheet.getRange(1, url_column, column_num, url_column).getValues();
  for(i=0; i <  urls.length; i++){
    url = urls[i];
    title = getTitleFromURL(url);
    results[i] = [url[0], title];
  }
  setResults(results);
}

function getTitleFromURL(url) {
  
  var response = UrlFetchApp.fetch(url);
  var myRegexp = /<title>([\s\S]*?)<\/title>/i;
  var match = myRegexp.exec(response.getContentText());
  var title = match[1];

  title = title.replace(/(^\s+)|(\s+$)/g, "");
  
  return title;
}

function setResults(results){
  sheet.getRange(1, url_column, column_num, results[0].length).setValues(results);
}

実行の仕方

google apps scriptのエディタに貼付けて、
対象のスプレッドシートで実行するだけ。

実行するfunctionはtitleGetter!

感想

Javascriptみたいなもんだよな、という話は聞いてたけど
実際、癖のあるJavascript書いてる感じだったw

スプレッドシートの操作の仕方も非常に簡単で、
VBAとかを触ったことのある人ならすぐに感覚を掴めそう。


何やら調べてると、この上でウェブアプリケーションも作れるようなので、
今度もうちょっと調べてみよ(・ω・´)