趣味の投資で情報収集をもっと効率的にできたらと思い、GASを使ってダウなどの指数をスプレッドシートに取り込むだけのスクリプトを書いてみました。
基本素人でエンジニアでもなく文系で元フリーターなので、書き方とか変かもしれませんがそこらへんは多めに見てください。
何かアドバイスなどあればそれは逆に嬉しいです。
前提条件
- 指数の数値を取り込むだけ
- 基本的に指数のページは可変(後からスプレッドシート状で変えられるよう)にする
- トリガーで定期的に更新
機能要件
- スプレッドシートの黄色枠(A2~C2)に必要情報を入力
- トリガーで定期実行
事前準備
cheerioライブラリの登録
まず上記のライブラリの登録が必要で、GASの画面の「ライブラリの+」をクリックしてcheerioのライブラリIDを入れる
1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0
スプレッドシートの準備
- スプレッドシートに「指数」シートを用意
- A1、B1、C1、D1にそれぞれ「取得指数ページURL」「セレクトid_価格」「指数名」「指数価格」と入力
- A2、B2、C2に必要なURL、id、指数名を手書き入力
これで事前準備は完了
コードと設定
具体的なコードは下記の通り(スプレッドシートIDなどはご自身の環境に読み替えてください)
コード.gs
function dow() {
const ss = SpreadsheetApp.openById("任意のスプレッドシートID");
const sh = ss.getSheetByName("指数");
const sisu_url = sh.getRange("A2").getValue();
const select_id_kakaku = sh.getRange("B2").getValue();
var dowsaki = UrlFetchApp.fetch(sisu_url).getContentText();
var $ = Cheerio.load(dowsaki);
var $titles = $(select_id_kakaku);
$titles.each(function(index, element) {
Logger.log($(element).text());
sh.getRange("D2").setValue($(element).text())
});
}
上記のコードをGASの画面に入力し動作するか実際に動かして確認
ちゃんととれてる!
トリガー設定については左メニューの時計のアイコンをクリックして
こんな感じで登録すれば、1時間に一度このdowのスクリプトが動き指数価格が更新される
これを応用していけばスプレッドシートに自分の好きな情報を集約して効率よく投資情報を確認できる
まとめ
今回は比較的簡単なコードで指数価格を自動更新できるスクリプトを書いてみた
初心者なので変な書き方になっているかもしれないので、一つ一つ勉強して直していこうとは思う・・・
このコードにさらにslack通知機能をつけたいと思い、別で作ってスクリプトを作ってみました。
もし興味のあるかたはどうぞ
https://minrich.net/programming/scraping_index_slack/