javascriptjsongoogle-apps-scriptjavascript-objectswebtrends

JSON/JS Object accessing key when you don't know the name in Google Apps Script


I'm working with a response from the Webtrends API in Google apps script and I have a JSON/JS object that looks like this:

"data": [
    {
        "period": "Month",
        "start_date": "2013-12",
        "end_date": "2013-12",
        "attributes": {},
        "measures": {
            "Visits": 500
        },
        "SubRows": [
            {
                "facebook.com": {
                    "attributes": {},
                    "measures": {
                        "Visits": 100
                    },
                    "SubRows": null
                },
                "google.co.uk": {
                    "attributes": {},
                    "measures": {
                        "Visits": 100
                    },
                    "SubRows": null
                },
                "newsnow.co.uk": {
                    "attributes": {},
                    "measures": {
                        "Visits": 100
                    },
                    "SubRows": null
                },
                "No Referrer": {
                    "attributes": {},
                    "measures": {
                        "Visits": 100
                    },
                    "SubRows": null
                },
                "t.co": {
                    "attributes": {},
                    "measures": {
                        "Visits": 100
                    },
                    "SubRows": null
                }
            }
        ]
    }
]

What I need to access is the names i.e facebook.com etc... and visit numbers for each of the SubRows.

I'm able to get the visit numbers, but I can't work out how to get the names. Please note the names will change constantly as different sites will send different amounts of traffic each day.

Section of my code at the moment where I get the visit numbers:

for(i in dObj){
var data = dObj[i].SubRows;
var sd = dObj[i].start_date;
var ed = dObj[i].end_date;

if(sd == ed){
    var timep = ""+ sd;
  }
  else{
    var timep = ""+ sd + "-" + ed;
  }

var subRows = data[0];

Logger.log(subRows);

for(i in subRows){

  var row = subRows[i];
  var rmeasures = row.measures;
  var rvis = rmeasures.Visits;

  values = [timep,"",rvis]; //Blank string for where the name of the site would go
}

}

I've tried the following links, but none of them seem to have the answer:

Getting JavaScript object key list How to access object using dynamic key? How to access key itself using javascript How do I access properties of a javascript object if I don't know the names?

I'm just using vanilla google apps script as I don't have any experience with Jquery etc...

Any help would be much appreciated!


Solution

  • Within the loop, the variable i contains the current key. Replacing the empty string with i should give you what you need.