毎日、日経平均の終値をスプレッドシートに書き込むのは面倒なので、自動化したいと思います
Googlespreadsheetには、現在株価を表示する関数があります
日経平均株価のコードは、INDEXNIKKEI:NI225
関数は=GoogleFinance(“INDEXNIKKEI:NI225″,”price”)となります
この情報を使って、chatGPTに以下指示を出します
スプレッドシートに以下の動作をする.gsスクリプトの作成に協力してください 最終行の次の行A列に当日の日付を入力、同行B列に先ほどの日経平均株価を入力する.gsスクリプトを作成してください
返ってきたスクリプトの一部がこれ
function updateStockData() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 現在の最終行を取得し、次の行を計算
var lastRow = sheet.getLastRow();
var newRow = lastRow + 1;
// 当日の日付を取得
var currentDate = new Date();
// 日経平均株価を取得
var nikkeiPrice = Number(=GoogleFinance("INDEXNIKKEI:NI225","price"));
しかしエラーが…
var nikkeiPrice = Number(=GoogleFinance(“INDEXNIKKEI:NI225″,”price”)); エラー表示がありましたが、原因はわかりますか?
chatGPTその返事が
申し訳ありませんが、
GoogleFinance
関数をスクリプト内で直接使用することはできません。そのため、スクリプト内で日経平均株価を取得するためには、別の方法を使用する必要があります。以下に、Google Apps Script内で外部のウェブサイトから株価情報をスクレイピングして取得する方法の一例を示します。ただし、ウェブサイトの構造が変わる可能性があるため、この方法も将来的に動作しなくなる可能性があります。
外部のウェブサイトから株価情報をスクレイピングして取得する方法では、注意が必要です
日経の指数公式サイトの利用規約等見て、スクレイピングOKかどうか記載がないため使えません
Yahoo!ファイナンスはダメそうです
色々探してみたところ、以下の記事に

financeのディレクトリについて検索して確認すると、「Allow」となっており、クロールを許可していることが分かりました。
そのため、GoogleファイナンスはGoogle Apps Script(GAS)などでスクレイピング可能であることが確認できました。
とあったので、上記記事を参考にしてコードを書いてみました
function updateStockData() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 最終行を取得
var lastRow = sheet.getLastRow();
// 関数を使って当日の日経平均株価を取得
var NI225Price = getNI225Price();
// 当日の日付を取得
var currentDate = new Date();
// 次の行にデータを記入
var newRow = lastRow + 1;
sheet.getRange(newRow, 1).setValue(currentDate);
sheet.getRange(newRow, 2).setValue(NI225Price);
}
function getNI225Price() {
// 銘柄コードを変数で定義する(NI225は日経平均のコード)
var code = "NI225";
// GoogleファイナンスURLと銘柄コードを組み合わせ、スクレイピング先URLを定義
var url = "https://www.google.com/finance/quote/" + code + ":INDEXNIKKEI";
// スクレイピング先URLに対し、フェッチしてHTMLソースを取得
var html = UrlFetchApp.fetch(url).getContentText();
// HTMLソースから株価部分を抽出し、変数に格納
var NI225Price = Parser.data(html)
.from('<div class="YMlKec fxKbKc">')
.to('</div>')
.build();
// 取得した株価を数値に変換して返す
return parseFloat(NI225Price.replace(/,/g, ''));
}
これで、日付と日経平均株価を自動入力できるようになりました
コメント