ある株価の情報取得をスクレイピングで自動化する
- ターゲット企業: Google
設計
- 株価を取得するURLを定義
- 株価を格納しているタグを見つける
3. もし存在すればタグ直後にある数字をSpreadSheetのセルに入力
4. もしなければ何もしない
GASの記述
getStockVal.gs
function getValOfStack() {
// データ取得するURLを定義
const url = "https://stocks.finance.yahoo.co.jp/us/chart/GOOGL";
// 取得した株価を出力するBookを定義
const book = SpreadsheetApp.getActiveSpreadsheet();
// 出力先のBookのシートを定義
const sheetData = book.getSheetByName("シート1");
// APIを用いて指定したURLにアクセスし、とりあえず全部取ってくる
const res = UrlFetchApp.fetch(url);
// 受け取った情報をUTF-8のテキストとして加工
var html = res.getContentText('UTF-8');
// 今回株価が入っているタグ(<td class="stoksPrice">1234</td>)みたいになっている
const targetTag = '<td class="stoksPrice">';
// タグが存在しているか確認(indexOfは見つからなかったら-1を返す)
const index = html.indexOf(targetTag);
// もし見つかればターゲットタグ以降を抜き出す
if (index !== -1) {
// indexは、見つけば場所を与える。ターゲットタグ分の文字列を与えてsubstringで切り取る
var html = html.substring(index + targetTag.length);
// 今htmlは(1234</td>......)となっている
// 直近の閉じタグを見つける
var index = html.indexOf('</td>');
// indexは5を返す。初めて</td>が見つかるのは5文字目だから
if(index !== -1) {
// (1234</td>)から、1番目の文字から4番目までをセルにセット
// substringは(第一引数 <= x < 第二引数)のようだ。
sheetData.getRange(2, 2).setValue(html.substring(0, index));
}
}
}