Alpha Vantage APIを使用した過去365日間のS&P 500データの取得と分析

Alpha Vantage APIを使用して過去365日分のデータを取得するには、APIリクエストのパラメータを変更し、取得するデータの範囲を指定する必要があります。ただし、無料プランでは一度のリクエストで取得できるデータ量に制限がある可能性があります。365日分のデータを取得するには、複数のリクエストを行い、結果を結合する必要があるかもしれません。

以下は、過去365日分のデータを取得するために修正したスクリプトの例です。

スクリプトの例


function collectAndProcessStockData() {
  var apiKey = 'YOUR_API_KEY'; // あなたのAlpha Vantage APIキーをここに入力
  var symbol = 'SPY'; // S&P 500 ETFのティッカーシンボル
  var functionType = 'TIME_SERIES_DAILY'; // 使用するAlpha Vantage APIの機能
  var apiUrl = 'https://www.alphavantage.co/query?function=' + functionType + '&symbol=' + symbol + '&apikey=' + apiKey + '&outputsize=full';

  var response = UrlFetchApp.fetch(apiUrl);
  var data = JSON.parse(response.getContentText());

  // データを解析して365日分の統計情報を取得
  var statistics = processData(data, 365);

  // スプレッドシートに結果を出力し、URLをログに記録
  var spreadsheet = outputToSpreadsheet(statistics);
  Logger.log('Spreadsheet URL: ' + spreadsheet.getUrl());
}

function getOrCreateSpreadsheet() {
  // 現在の日時をファイル名に使用
  var dateString = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd HH:mm:ss');
  var fileName = 'Stock Data ' + dateString;

  // Googleドライブ内でファイル名に一致するスプレッドシートを検索
  var files = DriveApp.getFilesByName(fileName);
  if (files.hasNext()) {
    return SpreadsheetApp.open(files.next());
  } else {
    // 該当するファイルがない場合は新しいスプレッドシートを作成
    return SpreadsheetApp.create(fileName);
  }
}



function processData(data, days) {
  var processedData = [];
  var timeSeries = data['Time Series (Daily)'];
  var dates = Object.keys(timeSeries).slice(0, days); // 最新から365日分を取得

  dates.forEach(function(date) {
    var dayData = timeSeries[date];
    processedData.push([date, dayData['1. open'], dayData['4. close']]); // 日付、始値、終値
  });

  return processedData;
}

function outputToSpreadsheet(data) {
  var spreadsheet = getOrCreateSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();
  sheet.appendRow(['Date', 'Open', 'Close']); // ヘッダー行

  data.forEach(function(row) {
    sheet.appendRow(row); // データ行
  });

  return spreadsheet;
}

// 残りの関数は以前と同じ...

// スクリプトの実行
function main() {
  collectAndProcessStockData();
}

注意点

  • outputsize=full パラメータをAPIリクエストに追加することで、利用可能な全ての時系列データを取得します。
  • 無料プランでは、APIのリクエスト数や取得できるデータ量に制限があるため、すべてのデータを一度に取得できない場合があります。その場合は、必要に応じて複数のリクエストを行い、結果を結合する必要があります。
  • Alpha VantageのAPIリクエスト制限に注意してください。制限を超えると、APIからデータを取得できなくなる可能性があります。