因此,我的函数通过外部API从项目系统获取时间条目。汇总时间条目的条件是批准状态必须具有某个值(> 0)。现在,我想添加另一个条件(&&),以便必须至少有一个批准状态每个天,并带有一个值(即,将批准状态的数量等于或大于5进行计算) )。这是一个有强制性的用户,可以输入一周中每一天的条目。我该怎么办?这是我尝试过的方法,不确定如何去做。 PS:这为许多用户计算。
var response = UrlFetchApp.fetch(url, options);
var info = JSON.parse(response.getContentText());
var content = info.data;
var total_hours = 0;
var count = 0;
for (var j = 0; j < content.length; j++) {
if (content[j].approvals.data.length > 0 && count >= 5) {
total_hours += content[j].hours;
}
}
Logger.log(total_hours)
}
样本JSON数据
{“ paging”:{“ per_page”:20,“ page”:1,“ previous”:null,“ self”:“ / api / v1 / users / 678108 / time_entries?assignable_id =&fields = approvals&from = 2020- 01-20&to = 2020-01-24&user_id = 678108&page = 1“,”下一个“:” / api / v1 / users / 678108 / time_entries?assignable_id =&fields = approvals&from = 2020-01-20&to = 2020-01-24&user_id = 678108&page = 2“},”数据“:[{” id“:1661350010,” assignable_id“:2993759,” assignable_type“:” Project“,” user_id“:678108,” bill_rate“:0.1,” bill_rate_id“:37032684,” date“:” 2020-01-20“,” hours“:0.0,” scheduled_hours“:null,” notes“:null,” task“:null,” is_suggestion“:false,” created_at“:” 2020-01- 21T17:32:22Z“,” updated_at“:” 2020-01-24T15:08:22Z“,” approvals“:{” paging“:{” self“:” ../ time_entries / 1661350010 / approvals?per_page = 0&page = 1“,” next“:null,” previous“:null,” page“:1,” per_page“:0},” data“:[]}},
const data = [
{
"id": 1661350010,
"assignable_id": 2993759,
"assignable_type": "Project",
"user_id": 678108,
"bill_rate": 0.1,
"bill_rate_id": 37032684,
"date": "2020-01-20",
"hours": 5,
"scheduled_hours": null,
"notes": null,
"task": null,
"is_suggestion": false,
"created_at": "2020-01-21T17:32:22Z",
"updated_at": "2020-01-24T15:08:22Z",
"approvals": {
"paging": {
"self": "../time_entries/1661350010/approvals?per_page=0&page=1",
"next": null,
"previous": null,
"page": 1,
"per_page": 0
},
"data": [{
'status': 'approved'
}, {
'status': 'approved'
}, {
'status': 'approved'
},{
'status': 'approved'
},{
'status': 'approved'
},{
'status': 'approved'
},{
'status': 'error'
}]
}
}
];
const total = data.reduce((acc, el) => {
const {hours, approvals: {data}} = el;
if (data.length && data.filter(e => e.status === 'approved').length >= 5) {
acc += hours;
}
return acc;
}, 0);
console.log(total);