如何在 Google App Script (Javascript ES5) 中实现数据减少
How do I implement data reduce in Google App Script (Javascript ES5)
我喜欢在 GAS 中实现数据缩减,以便我只能处理满足特定条件的数据。
本质上是这段代码:
const total = data.reduce((acc, el) => {
const {hours, approvals: {data}} = el;
if (data.length && data.filter(e => e.status === 'approved' || 'pending').length >= 5) {
acc += hours;
}
return acc;
}, 0);
console.log(total);
在此实现:
var url = 'https://api.10000ft.com/api/v1/users/' + users[i].id + '/time_entries?fields=approvals' + '&from=' + from + '&to=' + to + '&auth=' + TKF_AUTH + '&per_page=' + TKF_PGSZ;
var response = UrlFetchApp.fetch(url, options);
var info = JSON.parse(response.getContentText());
var content = info.data;
var total_hours = 0;
for (var j = 0; j < content.length; j++) {
if (content[j].approvals.data.length > 0 && content[j].approvals.data[0].status != 'ignored') {
total_hours += content[j].hours;
}
}
Logger.log('User name: ' + users[i].display_name + ' ' + 'User id: ' + users[i].id + ' ' + 'total hours: ' + total_hours)
}
}
有人有想法吗?
您想将以下脚本转换为可与 Google Apps 脚本一起使用的脚本。
const total = data.reduce((acc, el) => {
const {hours, approvals: {data}} = el;
if (data.length && data.filter(e => e.status === 'approved' || 'pending').length >= 5) {
acc += hours;
}
return acc;
}, 0);
console.log(total);
您已经确认上述脚本适用于您 Javascript 的情况。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改后的脚本:
const total = data.reduce(function(acc, el) {
const {hours: hours, approvals: {data: data}} = el;
if (data.length && data.filter(function(e) {return e.status === 'approved' || 'pending'}).length >= 5) {
acc += hours;
}
return acc;
}, 0);
Logger.log(total)
- 无法使用箭头函数
- 无法使用
const {hours, approvals: {data}} = el;
的解构赋值。请修改为const {hours: hours, approvals: {data: data}} = el;
.
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。届时,您能否提供您期望的样本输入和输出?借此,我想确认一下。
我喜欢在 GAS 中实现数据缩减,以便我只能处理满足特定条件的数据。
本质上是这段代码:
const total = data.reduce((acc, el) => {
const {hours, approvals: {data}} = el;
if (data.length && data.filter(e => e.status === 'approved' || 'pending').length >= 5) {
acc += hours;
}
return acc;
}, 0);
console.log(total);
在此实现:
var url = 'https://api.10000ft.com/api/v1/users/' + users[i].id + '/time_entries?fields=approvals' + '&from=' + from + '&to=' + to + '&auth=' + TKF_AUTH + '&per_page=' + TKF_PGSZ;
var response = UrlFetchApp.fetch(url, options);
var info = JSON.parse(response.getContentText());
var content = info.data;
var total_hours = 0;
for (var j = 0; j < content.length; j++) {
if (content[j].approvals.data.length > 0 && content[j].approvals.data[0].status != 'ignored') {
total_hours += content[j].hours;
}
}
Logger.log('User name: ' + users[i].display_name + ' ' + 'User id: ' + users[i].id + ' ' + 'total hours: ' + total_hours)
}
}
有人有想法吗?
您想将以下脚本转换为可与 Google Apps 脚本一起使用的脚本。
const total = data.reduce((acc, el) => { const {hours, approvals: {data}} = el; if (data.length && data.filter(e => e.status === 'approved' || 'pending').length >= 5) { acc += hours; } return acc; }, 0); console.log(total);
您已经确认上述脚本适用于您 Javascript 的情况。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改后的脚本:
const total = data.reduce(function(acc, el) {
const {hours: hours, approvals: {data: data}} = el;
if (data.length && data.filter(function(e) {return e.status === 'approved' || 'pending'}).length >= 5) {
acc += hours;
}
return acc;
}, 0);
Logger.log(total)
- 无法使用箭头函数
- 无法使用
const {hours, approvals: {data}} = el;
的解构赋值。请修改为const {hours: hours, approvals: {data: data}} = el;
.
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。届时,您能否提供您期望的样本输入和输出?借此,我想确认一下。