マネフォで管理している株・投信にGASでラベル付け関数を作成し、Googleスプレッドシートで可視化してみた

テクノロジー
この記事は約8分で読めます。

こんにちは、しーぬんです!
マネーフォワードで証券口座を連携していると、資産状況を可視化できて非常に便利です。
しかし、自分のポートフォリオの内訳を分析するのには不便を感じるシーンがありました。
たとえば・・・

  • 米国株と日本株の比率は、どれくらいなのだろう?
  • 個別銘柄と投資信託・ETFの比率は、どれくらいなのだろう?
  • 「楽天VT」と「emaxis slim オルカン」を同じグループにまとめた内訳を見たい

といったことを見る機能は、デフォルトでは提供されていないです。
これらを分析できるようにするため、データを加工して、ラベル付けをする必要があります。
また、ラベル付けも複雑な条件を加えたい場合は、エクセルでは、やや役不足でした。VBAでも実現はできますが、VBAは触りたくない・・・Googleスプレッドシートで、なんとかできないかな?ということで、勉強してみたところ、できました!
この記事では、私の備忘も兼ねて、次のことを紹介します!

データ取得からGASでスクリプトを書いて関数化するまでの手順
  • STEP 1
    マネーフォワードからデータを取得する

    マネーフォワードからデータを取得して、データの中身を確認します。

  • STEP 2
    GoogleAppsScriptでGoogleスプレッドシート用関数を作成する

    個別銘柄に「日本株」「米国株」「投信(アクティブ)」「投信(パッシブ)」などのラベルを付与する関数を作成する

  • STEP 3
    STEP2で作成した関数を利用してラベル付けをする

    Googleスプレッドシートで、STEP 2で作成した関数を使って、実際にラベル付けをします

このような動きをする関数を作成していきます!
関数名: judge_meigara_type
動き : 銘柄コードを基に「個別株(日本)」、「ETF(米国債)」等の分類を結果として返却する

STEP 1 マネーフォワードからデータを取得する

マネーフォワードにログインし、ナビゲーションから「資産」を選択します。

現金比率を確認するだけであれば、この画面だけで十分ですね!

「資産」の画面で、下のほうにいくと「株式」と「投資信託」のテーブルがあります。
「株式」については、銘柄コードがあり、保有数などの詳細なデータもこのテーブルで取得できます。

投資信託には、銘柄コードに相当する「協会コード」が付与されていません!

マネーフォワードの上記にデータをコピーして、Googleスプレッドシートにシートを作成し、貼り付けます。

  • カラム名(列名)は株式のテーブルと同じカラムに揃える
  • 株式のデータは、そのまま貼り付ける
  • 投資信託のデータは、「銘柄名」のカラム(列)に貼り付ける

データ取得の取得は、以上で完了です!
このデータだけでも十分に面白いデータですね。
次のステップで、分類ラベルを付与して、自分好みの分析ができるようにデータ加工をしていきます。

STEP 2 Google Apps ScriptでGoogleスプレッドシート用の関数を作成する

ここでは、Google Apps Scriptの起動方法と関数作成から、Googleスプレッドシートで利用できるようにするまでを紹介いたします!

Google Apps Scriptを起動する

まずは、Google Apps Scriptのプロジェクトを作成します。
「拡張機能」の「Apps Script」をクリックします。クリックすると、Google Apps Scriptが起動します。

Google Apps Scriptが正常に起動すると、次のような画面が表示されます。
「無題のプロジェクト」がデフォルトのプロジェクト名です。好きな名前に変更しましょう。ここでは「ポートフォリオ」という名前にしてみました。

画面の中央にある、関数を編集して、保存するとGoogleスプレッドシートでその関数を呼び出せるようになります。

function myFunction/* ← 関数名 */() {
  //ここに条件文などを記載する
}

Google Apps Scriptの関数を作成する

上場銘柄の場合は、銘柄コードで判定できますので、以下のような条件分岐でラベル付与をする関数を作成していきます。エクセルやGoogleスプレッドシートの標準関数だけで実現しようとすると、骨が折れそうですね・・・

  • 「1497」は米国社債なので「ETF(米国債)」
  • 「3455」はREITなので「REIT」
  • それ以外の数字4桁は「個別株(日本株)」
  • 「PFF」「QYLD」は米国上場ETFなので「ETF(PFF)」、「ETF(QYLD)」
  • それ以外は「個別株(米国株)」

実際に記述したコードは、こちらです!
関数名を「judge_meigara_type」として、関数として受け取るセルの値は「val」という変数で受け取り、IF文のなかで条件を記述し判定させながらラベルを結果として返却(return)しています。

function judge_meigara_type(val) {
  /** 株式 **/
  if (val == "1497") {
    return "ETF(米国債)"
  
  }  else if (val == "3455" ) {
    return "REIT"
  
  } else if (val.length = 4 &&  !isNaN(val) ) {
    // 銘柄コードが数字4桁であれば、日本株と判定する。
    // 個別で分類したい日本株は、ここより上の条件で判定
    return "個別株(日本)"
  
  } else if (val == "PFF" ) {
    return "ETF(PFF)"
  
  } else if (val == "QYLD" ) {
    return "ETF(QYLD)"
  
  } else {
    // 上記の分岐を通らかった銘柄は米国株と判定する
    return "個別株(米国)"
  }

}

投資信託は、銘柄名で判定するしかありません・・・。もしかしたら、うまく分類する方法があるかもしれません。しかし、今回は、個人で保有している範囲ですので、泥臭い方法で行いました。
下記のような分類を自分で用意して、銘柄名の部分一致の結果を基にラベルを付与する方法です。

  • 投信(国内・アクティブ)
  • 投信(国内・パッシブ)
  • 投信(海外・アクティブ)
  • 投信(海外・パッシブ)
  • その他

(MMFが投資信託のテーブルに含まれていたので、「その他」に含まれるようにしました。)

これをGoogle Apps Scriptのコードで表現すると、下記のようなコードになります。

function judge_toshin_type(val) {
  if ( ["ジャパンESG", "日経平均高配当", "日本高配当", "ひふみプラス", "インベスコ 店頭・成長株オープン", "ニッポン中小型", "おおぶねJAPAN"].some(str => val.includes(str)) ) {
    return "投信(国内・アクティブ)"
  
  } else if (["日経", "TOPIX", "国内リート", "J-REIT"].some(str => val.includes(str))) {
    return "投信(国内・パッシブ)"
  
  } else if (["配当貴族", "欧州高配当", "米国高配当", "長期厳選投資 おおぶね", "アジア株・アクティブ・オープン"].some(str => val.includes(str))) {
    return "投信(海外・アクティブ)"

  } else if (["全世界", "全米", "NASDAQ","Nifty50"].some(str => val.includes(str))) {
    return "投信(海外・パッシブ)"

  } else {
    return "その他"
  }

}

関数が作成できたら、「プロジェクトを保存」をクリックして、保存します。

保存できたら、ラベル付けの関数の完成です!
いよいよGoogleスプレッドシートで利用してみます。

STEP2で作成した関数を利用してラベル付けをする

正常に保存できていれば、もうGoogleスプレッドシートで保存した関数が利用できるようになっています!
typeという名前のカラムを作成し、「judge_meigara_code(“銘柄コード”)」とすることで、STEP2で作成した関数に銘柄コードが渡され、分類ラベルが結果として表示されます!

このように分類ラベルを付与すれば、自分の思い通りの分類わけで分析できるようになりますね!
こちらで作成したものを用いた、このブログを書きました!

この記事の内容が、みなさんのポートフォリオ確認などの役に立つことに繋がれば嬉しいです!
これからも便利なテクノロジーを活用しながら、ブログのレベルもあげていきたいです。

それでは~

byしーぬん

Comments

タイトルとURLをコピーしました