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からデータを取得できなくなる可能性があります。
ぜひコメントを残していってください