【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);
}
}
スポンサーリンク