WEBスクレイピング-3
スプレッドシートの銘柄コードから株価データをスクレイピングして表示
GASプログラミング実践入門:GASで株価データをWEBスクレイピング
スプレッドシートの銘柄コードから株価データをスクレイピングして表示
前のページで完成したマクロ[Nikkei_StockDataScraping]を駆動するマクロ[Get_Nikkei_MeigaraInfo]の説明です。
(1)シートクリア部分:
①13~28行目では日付が変わったときにシートをクリアします。
②34~37行目はいったん抽出した後で再度データを取得する場合にシートをクリアします。
(2)このマクロを実行すると今まで取得したデータ数を変数:startで得て、その次の番号の銘柄からデータを取得します。GASでは実行時間が最大6分という制限があるので、時間がたつと途中でマクロの動作が終了することがあります。その場合は再度実行するとすでに取得済みの次からの再開が可能になります。
50行目で銘柄コードを取得して、52行目で前に説明したマクロ[Nikkei_StockDataScraping] で銘柄情報を取得し、54行目以降でシートにデータを表示します。取得した株価情報はstockInfo変数にあるので、プロパティ(key/value)を指定して適切なセル位置に展開します。stockInfo['key']形式のメリットはkeyの指定で任意のセルに表示できることです。
(3)全銘柄の取得が終わると121行目のマクロで値上り・値下り銘柄のカウントをします。
銘柄シートをクリアするマクロ [Clear_Sheet]
引数としてシート名(shtName)を指定します。
GASプログラミングで注意すべきことは数値は「文字列」として認識されることが多いので、数値+数値の形式が文字列になってしまうことがあるので、数字として計算するときはNumber()で明確にした方が無難です。例えば銘柄数(meigarasu=225)とした場合、3+meigarasu=228と期待しても実際には3225、つまり文字列の和(連結)となることがあります。これを避けるために 3+Number(meigarasu)とする方が安全です。単に1つの場合はNumber()をつけなくてもいいようです。
(注意)日時についてもGASではセルの見た目とスクリプト上での扱いに違いがあるので、取り扱いに要注意です。
銘柄の値上り数・値下り数をカウントするマクロ [CountUpDown_Meigara]
このマクロも引数としてシート名(shtName)を指定します。
このマクロでは前日比のF列をいったんvaluesという配列に入れて、プラスなら値上り、マイナスなら値下りとしてカウントします。GASではgetRangeを使うと応答速度が遅くなるので、F列を1つずつ順番に調べると極端に遅くなります。これを避けるためにF列全体をvalues配列に格納してこの配列を順番に調べるようにします。