如何在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转换
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']);
});
}
}