Get Stock Data from Yahoo Finance in Google Spreadsheets

Google Finance is no longer integrated with Google Apps Script but you can still use Yahoo Finance with the URLFetch service to bring stock data from the Yahoo website into your Google Spreadsheet. Yahoo Finance data is available in CSV format that can be parsed with parseCSV method of Google Scripts.


function getYahooFinanceData(stockSymbol, startDate, endDate) {
  
  stockSymbol = stockSymbol || "GOOG";

  var start = new Date(startDate),
      end   = new Date(endDate),
      data  = [];
  
  var url = "http://real-chart.finance.yahoo.com/table.csv?s=" + stockSymbol +
            "&a=" + start.getMonth() + "&b=" + start.getDate() + "&c=" + start.getFullYear() +
            "&d=" + end.getMonth() + "&e=" + end.getDate() + "&f=" + end.getFullYear() + 
            "&g=d&ignore=.csv";
  
  var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  
  if (response.getResponseCode()) {
    
    var textFile = response.getContentText();
    
    // If the URL is incorrect, Yahoo will return a 404 html page and not a CSV
    if (textFile.indexOf("<html>") == -1) {
      
      var csv = Utilities.parseCsv(textFile); 
      for (var i=csv.length-1; i>1; i--) {
        data.push(csv[i]);
      }
      
    }
    
  }
  
  return data;
  
}