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

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

【GAS】Yahoo!ファイナンスのドル円レートをスクレイピングで取得したのでメモ

   

Google Apps Script(GAS)を使って、Yahoo!ファイナンスから最新のドル円レートを自動的に取得する方法を紹介します。これができればGASのトリガー機能を使って自動化することも可能です。

以下にソースコードを示しますが、解説をコメント文で記載しています。

/**
 * Yahoo!ファイナンスから現在のドル円レートを取得する関数です。
 * ウェブサイトのHTML構造に依存するため、Yahoo!ファイナンスのページが更新されると
 * 正常に動作しなくなる可能性があります。
 * @returns {number|null} 現在のドル円レート、または取得できなかった場合はnullを返します。
 */
function getUsdJpyRate() {
  // Yahoo!ファイナンスのドル円ページURLを定数として定義します。
  const url = "https://finance.yahoo.co.jp/quote/USDJPY=FX";
  
  try {
    // UrlFetchAppサービスを使用して、指定されたURLのコンテンツを取得します。
    // getContentText()メソッドでHTMLコンテンツを文字列として取得します。
    const response = UrlFetchApp.fetch(url).getContentText();
    
    // ドル円の値を抽出するための正規表現を定義します。
    // Yahoo!ファイナンスのHTML構造が変わると、この正規表現は機能しなくなる可能性があります。
    // 例: <span data-v-e64e1078="" class="yjMMLv_3 b6K4b9_3">159.45</span> のような形式から数値部分を抽出します。
    // !!! 注意: ここはYahoo!ファイナンスの最新のHTML構造に合わせて修正する必要があります !!!
    const regex = /<span class="_FxRateItem__number_1ye8x_48">(\d+\.\d+)<\/span>/;
    // 取得したHTMLコンテンツに対して正規表現を適用し、マッチする部分を検索します。
    const match = response.match(regex);
    // 開発中のデバッグ用にマッチ結果をコンソールに出力します。
    console.log(match);
    
    // マッチする部分があり、かつキャプチャグループ(正規表現のカッコ内の部分)が存在する場合の処理です。
    if (match && match[1]) {
      // 抽出された文字列を浮動小数点数に変換します。
      const usdJpyRate = parseFloat(match[1]);
      // ログに現在のドル円レートを出力します。
      Logger.log("ドル円の現在の値: " + usdJpyRate);
      // 取得したドル円レートを返します。
      return usdJpyRate;
    } else {
      // ドル円の値を特定できなかった場合のログメッセージです。
      Logger.log("ドル円の値を特定できませんでした。ウェブサイトの構造が変更された可能性があります。");
      // 値が取得できなかった場合はnullを返します。
      return null;
    }
    
  } catch (e) {
    // エラーが発生した場合のログメッセージです。
    Logger.log("エラーが発生しました: " + e.toString());
    // エラー発生時はnullを返します。
    return null;
  }
}

/**
 * getUsdJpyRate関数を実行し、結果をコンソールに出力するテスト関数です。
 */
// 実行例
function testGetUsdJpyRate() {
  // getUsdJpyRate関数を呼び出してドル円レートを取得します。
  const rate = getUsdJpyRate();
  // レートが取得できた場合(nullでない場合)にコンソールに出力します。
  if (rate) {
    console.log(rate);
  }
}
 

 

スポンサーリンク

 - Google Apps Script