将SQL数据库下载为CSV而不是选择行

问题描述 投票:0回答:1

我使用一个函数从Lists对象中下载一些选项作为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 var来覆盖整个表,但这是很多数据。

有问题的数据源的架构:

schema

和使用的计算:schema calculation

以下是UI中用于参考的表格:

UI screenshot

google-apps-script google-apps google-app-maker
1个回答
0
投票
  • 从查询中检索的记录是对象数组
  • 您可以使用.reduce将它们转换为csv

Snippet:

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.