ページ

~旅~

~資産運用~

2020年7月20日月曜日

Google Apps Scriptとスプレッドシートを使って株価を自動記録しよう!

















株価を取得して、過去の最大値、最小値と比較して、
現在価格がどのくらいの水準なのか見ています。

データの管理はGoogleのスプレッドシートを
使っています。Googleより無料で提供されている
表計算ソフトです。



毎月、月末になるとデータを記録しています。
でも、ついつい忘れてしまうんですよね。



最近、Googleのスプレッドシートでマクロが
使えるようになったという情報を目にして、
毎月自動記録出来ないか試しました。

マクロと関数


マクロは理解している限りでは、プログラムを
作って、自動で演算を行うことが出来る機能です。

値の合計を計算する『SUM』や値の数を
カウントする『COUNT』といった関数と
マクロはどう違うのか分からなくなるところです。

関数はプログラムで出来たパッケージのようなものです。
合計を求めるプログラム、値の数を求める
プログラムが標準で用意されていて、数値を入力すれば
結果が出力されます。スプレッドシートの関数はエクセルと
同じくらい種類も豊富です。

マクロでは、用意されていない関数を作ることも出来ます。
また、値のコピーや行を増やす等もプログラム出来るので
出来ることは関数に比べてたくさんあります。

マクロのプログラミング


マイクロソフトのエクセルでマクロを使ったことがあります。
プログラムの知識は素人レベルです。でも、簡単なものでは、
そこそこの知識で作成できました。

マクロの記録という機能があり、自動実行したい事を順番に
操作していけば、記録されてプログラムが勝手に出来上がります。
楽チンです。

ただ、何でも上手くいくわけじゃなくて、細かいところは手直しが
必要になります。やはり、プログラムの記述を少しは理解して
修正していきます。

マクロの記録


記録を開始すると作業がプログラムとして保存されます。
手順のミスも保存されるので、事前に手順を確認して記録します。

マクロを始めると絶対参照と相対参照を選択することになります。
セルの指定方法のことです。好みだと思いますが、絶対参照は
『B3』とか『C4』のように直接選択が出来るので分かり易いです。

自動記録のプログラム


今回のプログラムは、毎月決まった日に現在値をコピーして記録します。
流れは次のようになります。

1)行を追加して1段下げる。
2)『現在値』をコピーして、貼り付ける。
3)コピー先のセルを日付の書式に変更する。
4)最大値、最小値の数式入力

4)は最大値、最小値の計算で行を追加すると
指定箇所がズレるので計算式を入力しています。
これを毎月1回、月初にプログラムを走らせます。

プログラムが出来ました。実行すると上手く
出来たようです。もちろん、一発で出来た訳
ではないです。駄目なところは修正しました。

コメント挿入


『コメント挿入』は、便利な記述です。頭に//を入れると
コメント行として扱われます。コメント行というのは
プログラム実行では無視される文章です。プログラム文
の意味を書き残す使い方をします。

文を書き換えるときは、元のデータをコピーして
//を入れてコメント文で残す使い方をしています。
駄目だったら元に戻します。

ターゲット


『月1回実行する』というのはターゲットを
設定します。月末にすると、月によって
日数が違うし閏年があったりで、
ひと工夫いるそうなので、毎月1日実行で
設定しました。まず、ターゲットを最初は
1時間ごとで動くようにして動作を見ます。

問題発生


プログラムを自動実行すると上手くいきませんでした。
手動で実行すると上手くいって、ターゲットを設定して
時間で自動実行すると上手くいかない原因が
なかなか分かりませんでした。

原因はセルの指定方法でした。
手動で実行する時はスプレッドシートが
開かれているけど、自動実行の時は
閉じたままなのでセルの指定が違ってきます。
データを指定して取得するようにしました。

マクロの作成


マクロを自動でプログラム出来ますが、
やはり修正は必要です。いちから
理解しなくてもいいですが、少し
プログラム文を理解しないと
駄目なようです。

上手く動作するようになったら、月毎の
ターゲットに切り替えて運用しています。





0 件のコメント:

コメントを投稿