Search code examples
apigoogle-apps-scriptgoogle-sheetsyahoo-finance

How do I get specific value from JSON string in Google Script?


I'm trying to extract a specific value from this json file:

An example value I'm looking for is exDividendDate, fmt : 2020-09-24.

The code I've written to extract the value doesn't doesn't extract this or any other value and I'm not sure why. Any help would be greatly appreciated.

The error I get in the Google Apps Script is:

TypeError: Cannot read property 'earningsDate' of undefined (line 44, file "Stock Database"

function callAPI(symbol) { 
  
  // Call the API 
  var url = 'https://query2.finance.yahoo.com/v10/finance/quoteSummary/'
  var modules = "?modules=calendarEvents"
  var response = UrlFetchApp.fetch(url + symbol + modules);
    
  // Parse the JSON reply
  var json = response.getContentText();
  var data = JSON.parse(json);
  console.log(data)
  return JSON.parse(json)
}


function displayFinancials() {
  
  // Load sheets
  var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Results"); 
  var modelSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Financial Ratios Model");  
  
  // Get model input data
  var company = "Apple"
  var symbol = "AAPL"
  
  // call the API
  var api = callAPI(symbol);
  var results = api[0]; 
  
  // Output the API result
  var output = [company, symbol, results.exDividendDate.fmt] 

  console.log(output);


  dataSheet.appendRow(output)
  
}

Solution

  • When I saw the JSON data, it seems that exDividendDate is callAPI(symbol).quoteSummary.result[0].calendarEvents. So how about the following modification?

    From:

    var results = api[0];
    

    To:

    var results = api.quoteSummary.result[0].calendarEvents;