トリッカーに乗る豆腐メンタルの日記

トリッカー乗って遊んでる人の日記

google spreadsheetで株価を取得する(GASを使うわよ)

お○んこぉ^〜(気さくな挨拶)
今日は久々に有用なネタを書きまっせ
google spreadsheetで株価を取得するやり方を自分用にまとめまっしゅ

どうしてこうなった

小生はマイクロソフト様にお布施を払う余力がないのでUbuntuで生活をしている
そんなホモガキにも分け隔てなくサービスを提供してくれるグーグル様マジ神…

で、たまにspreadsheetで株価を取得したいな〜って日があると思うが、いくつかやり方があって少しハマったところもあるので自分用備忘録としてまとめることと相成った

取得するやり方

3つの方法がある

  1. googlefinance関数を使う (一番楽)

  2. ImportXML関数を使う(今は使い物にならぬ)

  3. GAS (Google Apps Script)を書く

ぶっちゃけこの記事の本題は3番目やで

その1 googlefinance関数を使う

グーグル先生の株価を取得するときにはセルに↓を入れるだけ。楽勝

=googlefinance("GOOGL")

日時の指定とか、始値or終値を指定できるらしいけど詳細は公式ドキュメントへどぞ GOOGLEFINANCE - ドキュメント エディタ ヘルプ

ただ、価格を取得できるものの種類が少なくて米国株、為替あたりしか取得できない
アルトコイン日本株の価格の取得はできないのでココらへんの価格を取得したい場合は別の手段が必要

その2 ImportXMLを使う

spreadsheet関数でImportXMLってのがあって、それでyahoo financeとかから価格の部分だけをひっぱってくることができた(過去形)
ただ、ほとんどのwebページがスクレイピングを禁止しているのでBANされて価格が取得できず使い物にならないため割愛
気になる人は「ImportXML 株価」とかで調べて(丸投げ)

その3 GASを書く

最終兵器GAS
ExcelVBAみたいなやつで、正直これがあれば大抵のやりたいことは実現できる
しかも書き方がJavaScriptとほとんど同じで書きやすく、JavaScriptに詳しい人はとっつきやすい
俺はJavaScript童貞だけどなぁ!

スクレイピングの処理を関数として書いてワークシート関数として使うこともできるけど、この方法も使っているうちにBAN喰らって取得できなくなる(ここでハマった)
なので、現実的にはスクレイピングの処理を書いて、それをトリガーで一日一回実行する or ボタンとか作って手動で呼び出す方法が無難

ちなみにGASのトリガーはApps Scriptのエディターの左側のメニューで設定できる f:id:misotofu:20210529153153p:plain:w500

さてようやく本題のスクレイピングのコードを載せとく

やっていることはとても単純で、1,2番目の関数で株価取得元のURLをティッカーから作る(ついでに価格部分の開始タグも書いてある)
1番目は取得元として株探を使うとき、2番目はyahoo financeを使うとき
んで、3番目の関数に作ったURLと開始タグを渡してフェッチして価格部分を抽出

あとはセルへの入出力を行う関数を適当に書いて、それをトリガーで呼び出して、終わり!閉廷!以上!みんな解散!

まとめ

googlefinance関数が使えるものは脳死でgooglefinance関数を使う
日本株とか、アルトコインとかはGAS書いてトリガーでスクレイピングがいいんじゃないですかねぇ?(適当)

参考にさせてもらった兄貴たち

http://forever-investor.com/investmentstrategy/analysis-tool/google-spreadsheet-importhtml-importdata/

【GAS】初めてのスクレイピング 〜会社の株価を取得〜 - Qiita