如何在Google应用程序脚本/JavaScript中获取嵌套元素

如何在Google应用程序脚本/JavaScript中获取嵌套元素,javascript,google-apps-script,Javascript,Google Apps Script,我需要获取{nb_conversions]:58“}在idgoal=ecommerceAbandonedCart,idgoal=4等下的值,我尝试了不同的方法但没有成功,如果有人能帮我快速解决,我将不胜感激 以下是API URL: 样本数据: [{“标签”:“未知”,“nb_统一访客”:558,“nb_访问”:590,“nb_操作”:980,“nb_用户”:0,“最大操作”:14,“总访问长度”:76439,“反弹计数”:408,“nb_访问次数”:45,“目标”:{“idgoal=电子商务Ba

我需要获取
{nb_conversions]:58“}
idgoal=ecommerceAbandonedCart,idgoal=4
等下的值,我尝试了不同的方法但没有成功,如果有人能帮我快速解决,我将不胜感激

以下是API URL:

样本数据:
[{“标签”:“未知”,“nb_统一访客”:558,“nb_访问”:590,“nb_操作”:980,“nb_用户”:0,“最大操作”:14,“总访问长度”:76439,“反弹计数”:408,“nb_访问次数”:45,“目标”:{“idgoal=电子商务BandonedCart”:{“nb_转换”:58,“nb_访问次数”:58,“收入”:16199.29999997,“项目”:88,“idgoal=电子商务订单”{:10,“nb_访问转换”:10,“收入”:606.7,“收入小计”:2448,“收入税”:0,“收入运输”:0,“收入折扣”:22.45,“项目”:12},“idgoal=4:{“nb_转换”:2,“nb_访问转换”:2,“收入”:2},“idgoal=5:{“nb_转换”:1,“收入”:5},“idgoal=6:{“nb_转换”:2,“nb_访问转换”:4},“idgoal=7:{“nb_转换”:16,“nb_访问转换”:16,“收入”:16},“idgoal=8:{“nb_转换”:13,“nb_访问转换”:13,“收入”:0},“idgoal=10:{“nb_转换”:1,“nb_访问转换”:1,“收入”:0},“nb_转换”:45,“收入”:633.7,“地区”:“xx”,“国家”:“xx”,“国家名”:“未知”,“地区名”:“未知”,“徽标”:”插件\/Morpheus\/icons\/dist\/flags\/xx.png“}]

功能目标(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“目标”);
var lastRow=sheet.getLastRow();
var today=sheet.getRange(1,6).getValue().toDateString();
var startDate=sheet.getRange(lastRow,1.getValue();
var now=sheet.getRange(lastRow,1).getValue().toDateString();
var dt=新日期(起始日期);
//Logger.log(现在);
//Logger.log(今天);
//Logger.log(dt);
如果(今天!=现在){
var response=UrlFetchApp.fetch(“https://demo.matomo.cloud/?module=API&method=UserCountry.getRegion&idSite=1&period=day&date=yesterday&format=JSON&token_auth=anonymous");
var json=response.getContentText();
var dataSet=JSON.parse(JSON);
对于(var i=0;i
给定示例数据,尝试使用
Object.keys()
获取密钥,并逐个循环获取所有
nb\u转换
,而不是单独传递
idgoal
。请参见以下内容:

代码:
var数据集=[{“标签”:“未知”,“nb_访问量”:558,“nb_访问量”:590,“nb_操作数”:980,“nb_用户数”:0,“最大操作数”:14,“总访问量”:76439,“反弹次数”:408,“nb_访问量”:45,“目标”:{“idgoal=电子商务bandonedcart”:{“nb_转换量”:58,“nb_访问量”:58,“收入”:16199.299999997,“项目”:88},“idgoal=电子商务订单”:nb_转换:10,“nb_访问转换”:10,“收入”:606.7,“收入小计”:2448,“收入税”:0,“收入运输”:0,“收入折扣”:22.45,“项目”:12},“idgoal=4:{“nb_转换”:2,“收入”:2},“idgoal=5:{“nb_转换”:1,“nb_访问转换”:1,“收入”:5},“idgoal=6:{“nb_访问转换”:2,“nb_转换”收入:4},“idgoal=7”:{“nb_转换”:16,“nb_访问转换”:16,“收入”:16},“idgoal=8”:{“nb_转换”:13,“nb_访问转换”:13,“收入”:0},“idgoal=10”:{“nb_转换”:1,“nb_访问转换”:1,“收入”:0},“nb_转换”:45,“收入”:633.7,“地区”:“xx”,“国家”:“未知”,“地区名称”:“未知”,“徽标”:插件\/Morpheus\/icons\/dist\/flags\/xx.png“}];
对于(var i=0;i
输出:

注:
  • 我建议你格式化数据,或者在类似这样的网站上查看。这真的很有帮助
  • 上面获取的
    nb_转换
    仅是
    goals
    键下的转换
  • 如果一些
    idgoals
    没有
    nb\u转换
    ,只需像上面的
    goals
    那样跳过它们。上面的链接数据都有
    nb\u转换
    ,所以我现在没有包括它们
工具书类

UrlFetchApp.fetch
参数有语法错误,URL应该用引号括起来。谢谢,它已更正@Rubén
    function Goals() {
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Goals");
  
  
  
  var lastRow = sheet.getLastRow();
  
  var today = sheet.getRange(1,6).getValue().toDateString();
  
  var startDate = sheet.getRange(lastRow,1).getValue();
  
  var now = sheet.getRange(lastRow,1).getValue().toDateString();
  
  var dt = new Date(startDate);
  
  //Logger.log(now);
 // Logger.log(today);
  //Logger.log(dt);
  
   
  if( today != now){
    
       
  var response = UrlFetchApp.fetch("https://demo.matomo.cloud/?module=API&method=UserCountry.getRegion&idSite=1&period=day&date=yesterday&format=JSON&token_auth=anonymous");
  var json=response.getContentText();
  var dataSet=JSON.parse(json);
  
     
  for(var i = 0; i < dataSet.length; i++)
    {
      sheet.getRange(i+lastRow+1,2).setValue([dataSet[i]['label']]);
      sheet.getRange(i+lastRow+1,3).setValue([dataSet[i]['nb_visits']]);
      sheet.getRange(i+lastRow+1,4).setValue([dataSet[i]['nb_uniq_visitors']]);
      sheet.getRange(i+lastRow+1,5).setValue([dataSet[i]['goals']['idgoal=ecommerceAbandonedCart']]);
      sheet.getRange(i+lastRow+1,1).setValue(now);
    }
    
      dt.setDate(dt.getDate()+1);
  lastRow = sheet.getLastRow();
  sheet.getRange(lastRow+1,1).setValue(dt);
  }


}
var dataSet = [{"label":"Unknown","nb_uniq_visitors":558,"nb_visits":590,"nb_actions":980,"nb_users":0,"max_actions":14,"sum_visit_length":76439,"bounce_count":408,"nb_visits_converted":45,"goals":{"idgoal=ecommerceAbandonedCart":{"nb_conversions":58,"nb_visits_converted":58,"revenue":16199.299999999997,"items":88},"idgoal=ecommerceOrder":{"nb_conversions":10,"nb_visits_converted":10,"revenue":606.7,"revenue_subtotal":2448,"revenue_tax":0,"revenue_shipping":0,"revenue_discount":22.45,"items":12},"idgoal=4":{"nb_conversions":2,"nb_visits_converted":2,"revenue":2},"idgoal=5":{"nb_conversions":1,"nb_visits_converted":1,"revenue":5},"idgoal=6":{"nb_conversions":2,"nb_visits_converted":2,"revenue":4},"idgoal=7":{"nb_conversions":16,"nb_visits_converted":16,"revenue":16},"idgoal=8":{"nb_conversions":13,"nb_visits_converted":13,"revenue":0},"idgoal=10":{"nb_conversions":1,"nb_visits_converted":1,"revenue":0}},"nb_conversions":45,"revenue":633.7,"region":"xx","country":"xx","country_name":"Unknown","region_name":"Unknown","logo":"plugins\/Morpheus\/icons\/dist\/flags\/xx.png"}];

for (var i = 0; i < dataSet.length; i++) {
  // Upon testing your linked data, some of them doesn't have goals key. 
  // Be sure to only access those who have goals to avoid encountering an error.
  if(dataSet[i]['goals']) {
    Object.keys(dataSet[i]['goals']).forEach(function (idgoal){
      Logger.log(dataSet[i]['goals'][idgoal]['nb_conversions']);
    });
  }
}