Google Apps Script(GAS)を使った日本株・投資信託の自動記録

GOOGLEFINANCE関数、IMPORTXML関数を使ったスクレイピングによる管理方法を以前の記事で紹介しました。また、Google Apps Script(GAS)を使った3STEPでより簡単なスクレイピングできる方法をこちらの記事で紹介しました。今回は日本株、投資信託の株価を自動実行で取得し記録する方法を紹介したいと思います。GASのソースを公開しておりますので自由にコピペして使って下さい。

にほんブログ村 投資ブログへ

目次

事前準備

以前の記事で紹介した、 ① Parserライブラリの追加と ② 株価取得関数の登録 が済んでいる前提で話をしますので、まだの方は準備をお願いします。

① Parserライブラリの追加

こちらの記事を参考に準備をお願いします。

② 株価取得関数の登録

こちらの記事を参考に準備をお願いします。

③ スプレッドシートの準備

以下のような日本株と投資信託の表をご用意して下さい。日本株の株価取得には『銘柄コード』を利用します。投資信託の基準価格取得には『ISINコード』を利用します。

ISINコードって何?と思われた方は、楽天証券で投資信託銘柄を1つ調べてみて下さい。例えば、『eMAXIS Slim 全世界株式(オール・カントリー)』の楽天証券のページのURLは、

https://www.rakuten-sec.co.jp/web/fund/detail/?ID=JP90C000H1T1

ですが、『?ID=』以下の部分が、ISINコードとなります。

C列の会社名・銘柄は、IMPORTXML関数を使っても取得可能ですが、処理を軽くするため手打ちを推奨します。

株価を自動取得する関数の作成

以下の関数では、次のような処理を行っています。銘柄数に応じてシートの行追加や変数の初期値変更をお願いします。

①用意したスプレッドシートのワークシートを開く。

②4列目に列を挿入し、表の一番上の行に日付を入れる。

③getStockPriceKabutan関数を使って、日本株の株価を取得し記録する。

④getPriceToushin関数を使って、投資信託の基準価格の取得と記録を行う。

function myFunction() {
 //------------------------------------------------
 //①用意したスプレッドシートのワークシートを開く。
 //------------------------------------------------

  //スプレッドシートを指定して開く。xxxxxxの部分は、スプレッドシートのID
  var ss = SpreadsheetApp.openById("xxxxxxxx");

  //シート番号を指定。一番左の場合は、[]内の数字を0にする。
  var sheet = ss.getSheets()[0];

  //取得したシートをアクティブにする
  sheet.activate();

 //------------------------------------------------
 //②4列目に列を挿入し、表の一番上の行に日付を入れる。
 //------------------------------------------------

  //4列目の前に列を追加する
  sheet.insertColumnBefore(4);

  //日付を入れる
  var date = new Date();
  ss.getRange('D1').activate();
  ss.getActiveRangeList().setValue(date);
  ss.getRange('D11').activate();
  ss.getActiveRangeList().setValue(date);


 //------------------------------------------------
 //③日本株の株価を取得し記録する。
 //------------------------------------------------

  for(let i = 2; i <= 4; i++) {
    //銘柄コードの入ったセルを指定する。
    var range = sheet.getRange(i,2);
    //値を取得する
    var value = range.getValue();
    //独自関数を使って、株価を取得する
    let stockPrice = getStockPriceKabutan(value) ;
    //セルを指定し、株価を記録する
    sheet.getRange(i,4).setValue(stockPrice);
  }

 //------------------------------------------------
 //④投資信託の基準価格を取得し記録する。
 //------------------------------------------------
  for(let i = 12; i <= 14; i++) {
    //ISINコードの入ったセルを指定する。
    var range = sheet.getRange(i,2);
    //値を取得する
    var value = range.getValue();
    //独自関数を使って、株価を取得する
    let stockPrice = getPriceToushin(value) ;
    //セルを指定し、株価を記録する
    sheet.getRange(i,4).setValue(stockPrice);
  }

};

注意点

①用意したスプレッドシートのワークシートを開く。

スプレッドシートのidは、URLに記載されています。スプレッドシートのURLが以下の場合、xxxxxxxxxの部分がIDとなります。IDはスプレッドシートごとに違う値になっていますので、間違えないように注意してください。

https://docs.google.com/spreadsheets/d/xxxxxxxxx/edit~~~

②4列目に列を挿入し、表の一番上の行に日付を入れる。

新しい値が常に4列目に追加されていきます。ワークシートの表の行を追加した場合は、日付を入れる位置を修正して下さい。

③getStockPriceKabutan関数を使って、日本株の株価を取得し記録する。

ワークシートの表の行を追加した場合は、for関数の引数を変更して下さい。

for(let i = 2; i <= 4; i++) {

④getPriceToushin関数を使って、投資信託の基準価格の取得と記録を行う。

ワークシートの表の行を追加した場合は、for関数の引数を変更して下さい。

for(let i = 12; i <= 14; i++) {

実行結果

スクリプトエディタから実行すると以下のような結果となります。

定期実行の設定

先ほど作った、myFunction()関数の定期実行の設定はスクリプトエディタで簡単に設定できます。以下の例では、1日1回AM7時~8時に実行するように設定します。

①スクリプトエディタの左側のメニューから、時計マーク(トリガー)を選択します。以下の画面になりましたら、右下の『トリガーを追加』という青いボタンをクリックします。

②「実行する関数を選択」で、先ほど作った myFunction()関数 を選択します。

「イベントのソースを選択」では、時間主導型を選択します。

「時間ベースのトリガーのタイプを選択」では、「日付ベースのタイマー」を選択します。

「時間を選択」では、午前7時~8時を選択します。

右下の「保存」という青いボタンをクリックします。

③トリガーが設定されると以下のように表示されます。

投資

Posted by 知恵蔵