LoginSignup
0
1

More than 1 year has passed since last update.

Google Apps Script(GAS)でダウ先物価格をスプレッドシートにスクレイピング

Last updated at Posted at 2022-06-01

趣味の投資で情報収集をもっと効率的にできたらと思い、GASを使ってダウなどの指数をスプレッドシートに取り込むだけのスクリプトを書いてみました。

基本素人でエンジニアでもなく文系で元フリーターなので、書き方とか変かもしれませんがそこらへんは多めに見てください。
何かアドバイスなどあればそれは逆に嬉しいです。

前提条件

  1. 指数の数値を取り込むだけ
  2. 基本的に指数のページは可変(後からスプレッドシート状で変えられるよう)にする
  3. トリガーで定期的に更新

機能要件

  1. スプレッドシートの黄色枠(A2~C2)に必要情報を入力
  2. トリガーで定期実行

事前準備

cheerioライブラリの登録

まず上記のライブラリの登録が必要で、GASの画面の「ライブラリの+」をクリックしてcheerioのライブラリIDを入れる

1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0

20220531_2.PNG

スプレッドシートの準備

  1. スプレッドシートに「指数」シートを用意
  2. A1、B1、C1、D1にそれぞれ「取得指数ページURL」「セレクトid_価格」「指数名」「指数価格」と入力
  3. A2、B2、C2に必要なURL、id、指数名を手書き入力
    20220531_1.PNG

これで事前準備は完了

コードと設定

具体的なコードは下記の通り(スプレッドシート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の画面に入力し動作するか実際に動かして確認
20220531_3.PNG

ちゃんととれてる!

トリガー設定については左メニューの時計のアイコンをクリックして
20220531_4.PNG

こんな感じで登録すれば、1時間に一度このdowのスクリプトが動き指数価格が更新される

これを応用していけばスプレッドシートに自分の好きな情報を集約して効率よく投資情報を確認できる

まとめ

今回は比較的簡単なコードで指数価格を自動更新できるスクリプトを書いてみた
初心者なので変な書き方になっているかもしれないので、一つ一つ勉強して直していこうとは思う・・・

このコードにさらにslack通知機能をつけたいと思い、別で作ってスクリプトを作ってみました。
もし興味のあるかたはどうぞ
https://minrich.net/programming/scraping_index_slack/

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1