试图获取对象属性中对象的属性

时间:2016-02-19 23:59:25

标签: google-apps-script

有时JavaScript会和我一起玩(虽然这笔交易是因为我会玩它...)下面的测试代码一直在抵制,所以我在这里寻找更多聪明人的帮助。 / p>

回答recent question我尝试创建Google Advanced Calendar API中可用的所有颜色ID的可读列表。

请求非常简单:Calendar.Colors.get()

响应是一个具有几个属性的对象,每个属性都是具有其他属性的其他对象。

我可以进入第二级,但最后 - 在这种情况下最有用 - 级别会返回一个令人不安的"未定义的" (见下面的部分日志)

那就是我的问题......

带注释的

代码:

function getColorList(){
  var colors = Calendar.Colors.get();
  //Logger.log(JSON.stringify(colors));
  for(var cat in colors){
    Logger.log("category "+cat+" = "+JSON.stringify(colors[cat])+'\n\n')
  }
  // from there I try the "event" category
  var events = colors["event"];
  Logger.log('object colors["event"] = '+ JSON.stringify(events))
  // then I try to get every properties in this object
  for(var val in events){
    Logger.log("key "+val+" = "+JSON.stringify(events[val]))
  }
}

enter image description here

完整日志为viewable here(外部化以保持合理的短时间)

1 个答案:

答案 0 :(得分:2)

看起来( key )可能正在指示桑迪躲避的只读定义。 在将colors转换为字符串后,只需将自己的对象设置为循环:

var json = JSON.stringify(colors["event"]);
var myObj = JSON.parse(json);

for(var val in myObj){
  Logger.log("key "+ val +" = "+JSON.stringify(myObj[val]))
}