/NISA_GAS-2024

Google-Apps-Script NISA GAS Google-SpreadSeet

Primary LanguageJavaScript

Google Apps Script(GAS)で日本株価(ETF 含む)、投資信託価格の取得

Google スプレッドシートを活用し、米株(GOOGLEFINACE で株価を取得できます)、日本株、投資信託の価格(GAS で作成した関数STOCKPRICEJPで取得します、株価は20分ディレイです)を取得します。

特に、日本株と投資信託は Parser ライブラリを使用します。 使用にあたっては Parser ライブラリの追加を行う必要があります。(以下に記述してありますのでその手順にしたがって行ってください。)

作成の仕方

  • Google のアカウントで chrome でログインし空のスプレッドシートを作成する

Parser を追加

  • スプレッドシートの拡張機能からApps Scriptをクリックします。(Google はこのアプリを検証していません。というエラーメッセージが出ますが、高度なをクリックしプロジェクトへ(危険)のリンクをクリックしてください。そして、アクセスの許可をします。)

  • ライブラリにParserを追加します。 スクリプト ID : 1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw

    スクリーンショット 2024-02-13 17 09 45
  • スクリプト ID を追加して検索をします。

    スクリーンショット 2024-02-13 17 10 01
  • スクリプトの内容が表示されたら追加をクリック

コードを追加

  • コード.gsにプログラムを追加

    スクリーンショット 2024-02-13 17 09 00
  • 今あるコードを全て削除します

  • getStockPrice-gas.gs のコードをコピー&ペーストする

スプレッドシートタブにてスプレッドシートの作成

シートを1つ追加します。 次にシートの名前を変更してください。

  • シート1 -> 株価
  • シート2 ->

株価シートを作成

1 行目に A 列から順に以下を記入

  • 銘柄名
  • 取引所コード
  • 証券コード
  • 株価(円)
  • 株価($)
  • 保有数(株、口数)
  • 購入価格(1 単元)
  • コストベース
  • 時価評価額
  • 備考

証券コード、株価(円)、時価評価額はプログラム上で各銘柄のセルの位置から値を取得していますので日本株及び投資信託のセルの位置はプログラムのコードと合わせてください。

スクリーンショット 2024-02-14 21 04 24

銘柄名や証券コード、購入価格(1 単元)を入力する

米国株の場合は、ティッカーシンボルというのが決まっているのでそれを入れる グーグルやアップルは、GOOG,AAPLなどです

数式を入力する

  1. 米国株がある場合は株価($)を取得する式を入力する 米国株の取得はスプレッドシートの株価($)の各セルで=GOOGLEFINANCE(証券コードのセル位置)を入力します。

(例)=GOOGLEFINANCE(C2)

C2 の位置が米国の証券コードになっていないとエラーとなります

取引所コードを指定する場合は (例)=GOOGLEFINANCE(B2&":"&C2)

B2 に値を入れない場合でもエラーにはなりませんが google が推測した最適解を提供してくれます。

  1. 日本株、等身の価格(円)を取得する式を入力する 日本株(ETF 含む)と投信の株価(円)の各セルで=STOCKPRICEJP(取引所コードのセルの位置,証券コードのセルの位置)を入力します。

    (例) =STOCKPRICEJP(B3,C3)

    B3 のセルの値にはJPorTOSHINを入力してください。 C3 が証券コードになります。 取引所コードのセルの値がJPの場合は、日本株の証券コードが必要になります。 投資信託の証券コードは ISIN コードになります。

  2. 株価(円) 米国株の円ベースの株価を取得するには先ずドル円を取得する必要があります。 株価一覧の下にドル円取得のためのコードを入力する

=GOOGLEFINANCE("USDJPY")
  1. コストベース 購入価格(1 単元)*保有数 購入価格(1 単元)は円ベースの方が後々計算しやすいので円ベースで入れる (例)
=G2*F2
  1. 時価評価額 株価(円)*保有数 (例)
=D2*F2

表シートを作成

1 行目は最初に更新日時が来るのでそのあとは銘柄名を横並びに記載してください。

  • 更新日時
  • 1 つ目の銘柄名
  • 2 つ目の銘柄名
  • 3 つ目の銘柄名
  • 4 つ目の銘柄名
  • 5 つ目の銘柄名
  • 6 つ目の銘柄名

今回はサンプルで以下のようになっています

  • Google(GOOG)
  • バンガード・S&P 500(VOO)
  • S&P 500 ETF(1655)
  • ソフトバンク(9984)
  • eMAXIS Slim S&P500
  • eMAXIS Slim 全世界株式
スクリーンショット 2024-02-13 20 10 41

Apps Script タブにて

日本株の銘柄数や投資信託の数によりコードを一部変更する必要あり

  • updateStockPriceListのコードを変更します(KEY,VALUE の形式となっていますコード上でeDataCelleColumnの株価を取得するKEYは同じにしてください。)

表作成のタイマーを設定

時計マークのトリガーにて行います。

  • トリガーを追加
  • 実行する関数を選択にてupdateStockPriceListを選択
  • イベントのソースで選択にて時間主動型を選択
  • 時間ベースのトリガーのタイプを選択にて日付ベースのタイマーを選択
  • 時刻を選択にて午前0時〜1時を選択
  • 保存

時刻選択はなるべく一日に1回程度に留めておかないと運用する上での上限値がありますのでそれに抵触する恐れがあります。 また、日本株取得時にサーバーへの負荷となりますのでご注意ください。

参考

後は、コストベースと時価評価額の値を使ってグラフなど作成されてはいかがでしょうか? それは各自行ってください。 尚、appsscript.json はParserを追加すると作られるものなので気にしなくても大丈夫です。