グーグルファイナンス・ポートフォリオをスプレッドシートで作ろう!その2

跳び箱米国株投資

その1をみていない人はまずそちらからどうぞ。

スポンサーリンク

スプレッドシート活用の注意点2

さて、最大の難関の解決方法を説明しよう。PortfolioTrendシートは基本は自動更新で損益額が自動更新されグラフにプロットされる優れものだ。なので、AとB列の2行目以降は削除しても問題ない。

B列は単純にPerformanceシートのL列のOverall return ($)の合計額だが、作者はこれをGoogle Apps Scriptでプログラミングしている。

では、早速スクリプトを開いてみよう。ツールタブからスクリプト エディタを開く。どのシートからでも開けるが、PortfolioTrendシートから開こう。

基本的にコードは何にも変更する必要はないが、実用的に問題があるのだ。PerformanceシートのOverall return ($)は儲かっている銘柄ばかりではない。マイナスの数字が示されたときに、全ての銘柄の損益を足してくれないのだ。

まず、スクリプトを動かすためには許可をしないといけないが、手順が面倒というかよく分からないので一応、記載しておく。(何でこんな面倒なのか不明)

Performanceシートに移動して合計額L列の合計は$394,070.36であることが分かる。

PortpolioTrendシートに自動プロットされた数字ももちろん一致していることを確認できる。

次に、ネットフリックス(NFLX)のセルL8の式にマイナスを追加して、-$14,249.66に変更すると、トータルも$365,571.04と減ることが分かる。

次にPortfolioTrendのシートに移動して確認すると数字が一致していない。PortfolioTrendシートの数字は一体何なのか?

実はこれ、マイナス表記された銘柄は無視?避けてしまうのだ(黄色の部分)。理由はコードが分からないので全く分からない。

ここから、7、8時間ほどGoogle App ScriptをYouTubeで勉強した。結局、ループのコードで合計を導いているのだが、その部分が難しく諦めた。

YouTubeのコメント欄に似たような状況の人がコメントを書いているが、コードが読めないので分からないと。トータルの行をPerformanceシートに追加したとあります。作者の返信がないのが悲しい。

そこで、Performanceシートのトータルを吐き出すようにすることはまだ簡単。新しい銘柄でトータルの行が変化しても問題ないようにするコードはググってパクったのだが、ま、何とか完成した。コードも載せておくが自己責任でお願いします。

/* 

EVENT FUNCTION

Each time the spreadsheet is opened or refreshed
appends a new entry 
on the PortfolioTrend sheet 
for the sum of the OverallReturn column 
from the Performance sheet.

*/

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var performanceSheet = spreadsheet.getSheetByName('Performance');
  var myLastRow = performanceSheet.getRange(performanceSheet.getMaxRows(), 12).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  var total = performanceSheet.getRange(myLastRow, 12).getValue()
  
  var localDateTime = new Date()
  var portfolioSheet = spreadsheet.getSheetByName('PortfolioTrend');
  portfolioSheet.appendRow([localDateTime, total]);



}

これから、どんどんアレンジを加えてさらにクールになると思うので、また紹介していきたい。

しかし、無謀にもいちからGoogle App Script(GAS)を最低限勉強して何とかなるもんだな。これを機会に少しやってみようか(笑)

コメント

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