非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Googleスプレッドシート上で為替データをスクレイピングする(Google Apps Script)

   

Web上で公開されている為替データをGoogleスプレッドシート上でスクレイピングする方法です。もちろんGoogle Apps Scriptを使用します。

GoogleスプレッドシートでGoogle Apps Scriptを使う方法は以下の記事を参照ください。

[ad#top-1]

スクレイピングするWebサイト

今回スクレイピングするWebサイトはYahoo!ファイナンスのページです。そこからUSDJPYのBid値(赤い○のところ)をGETしたいと思います。

 

まず最初にページのソースを解析する必要があります。

以下の通り、赤□で囲ったところがスクレイピングする箇所です。

 

ddという謎のタグで括られていました。しかも一部の文字を大きくするためのspanタグが間に入っています。

<dd id="USDJPY_detail_bid">112.<span class="large">54</span>9</dd>
 

 

スクレイピングの流れを解説

以下がスクレイピングの流れです。

  1. Webページのソースを取得する。
  2. <dd id=”USDJPY_detail_bid”>タグの位置を探す。
  3. ソースの文字列の先頭〜2のタグ位置までを削除。
  4. </dd>タグの位置を探す。
  5. ソースの文字列の2のタグ位置以降を削除。
  6. <span class=”large”>を削除
  7. </span>を削除
  8. スプレッドシートのセルに表示

ソースコード

以下がソースコードです。1〜8の解説をコメントで入れています。

function getUSDJPY() {
  //1. Webページのソースを取得する。
  var response = UrlFetchApp.fetch("https://info.finance.yahoo.co.jp/fx/detail/?code=USDJPY=FX");
  var html = response.getContentText();
  //2. <dd id="USDJPY_detail_bid">タグの位置を探す。
  var tag = 'USDJPY_detail_bid">';
  var index = html.indexOf(tag);
  usdjpy = '';
  if (index !== -1) {
    //3. ソースの文字列の先頭〜2のタグ位置までを削除。
    var html = html.substring(index + tag.length);
    var index = html.indexOf('</dd>');
    if (index !== -1) {
       //4. </dd>タグの位置を探す。
       html = html.substring(0, index);
       //6. <span class="large">を削除
       html = html.replace('<span class="large">','')
       //7. </span>を削除
       usdjpy = html.replace('</span>','')
    }
  }

  //8. スプレッドシートのセルに表示
  var mySheet = SpreadsheetApp.getActiveSheet();
  mySheet.getRange("A1").setValue(usdjpy);
}
 

 

実行

実行すると以下の通りUSDJPYデータをGETできました。

 

[ad#ad-1]

スポンサーリンク

 - Google Apps Script, Google Dirve