我使用一个函数将列表对象中的一些选择作为CSV下载。我想对连接到Lists对象的整个数据源执行相同的操作,但是我不确定如何缩放以处理100,000行。在下载列表数据为CSV的按钮上,我有:
var rows = widget.root.descendants.MainTableBody.children._values;
var csvdata = [];
csvdata.push([["Email"],["Last Login"],["Sku ID"],["Sku Name"],["Docs Added Recently"]]);
for (var i in rows) {
var t = [];
t.push(rows[i].children.EmailField.text);
t.push(rows[i].children.LastLoginField.text);
t.push(rows[i].children.SkuIdField.text);
t.push(rows[i].children.SkuNameField.text);
t.push(rows[i].children.DocsAddedField.text);
csvdata.push(t);
}
console.log(csvdata);
exportToCsv("LMexport",csvdata);
导出函数取自this answer,.I基本上需要rows
变量来覆盖整个表,但这需要大量的数据。
有问题的数据源的模式:
以及使用的计算:
下面是该表在UI中的外观,以供参考:
发布于 2019-04-16 03:29:44
从查询中检索到的
.reduce
将其转换为csv代码片段:
function exportCsv(){
var query = app.models.Employees.newQuery();
//query.filters.... use query used to populate the datasource
var records = query.run(); //[{},{},{}...]
var csv = records.reduce(function(str, rec){
var email = rec.Email;
var login = rec.LastLogin;
var skuId = rec.SkuId;
return str + '"' + [email,login,skuId].join('","') + '"\n'; // result: "email","login","skuId"\n
},'');
return csv;
}
https://stackoverflow.com/questions/55695608
复制相似问题