如何从 App Maker 下载生成的 CSV 文件?
How To Download a generated CSV file from App Maker?
我为我们的内部用户创建了一个 AppMaker 应用程序,以促进审批流程。
主审批人要求提供下载包含大量数据的 CSV 文件而不将其保存到 GDrive 的选项。 (我也不想采用这种方法,因为这需要 Drive 权限,当用户看到该应用程序正在请求访问其文件的权限时,他们会惊慌失措)。
所以,我得到的最深入的结果是将 window.open() 与 csv 数据一起使用,它确实下载了一个 csv 文件,但没有任何扩展名。但是,这并不优雅,而且使用它的人更难将其重命名为 download.csv 或从 Excel 打开它而不是双击它。
我在网上找到了使用带有 href 和下载属性的锚点的选项,并愉快地实现了它只是为了从 AppMaker 得到一个很好的错误,即 Anchor href 不允许以 [=22= 开头].
有什么想法吗?解决方案?
谢谢!
我为类似的功能实现了以下代码,但请注意,它只生成当前加载到数据源中的项目的数据。如果您有多页数据,则需要单独下载每一页。请注意,下载特别命名为 YourFileName.csv.
var ds = widget.datasource;
var items = ds.items;
var fields = ds.model.fields._values;
var serialized = '';
var headers = [];
var permit = widget.root.children.Panel1.datasource.item.WR_Number;
fields.forEach(function(fieldname) {
var header = fieldname.displayName;
headers.push(header);
});
serialized += headers.join(',') + '\r\n';
items.forEach(function(item) {
var values = [];
fields.forEach(function(field) {
var value = item[field.name];
var strVal = value === null ? '' : value.toString();
values.push(strVal);
});
serialized += values.join(',') + '\r\n';
});
var file = new Blob([serialized], {type: 'text/csv'});
var link = document.createElement('a');
link.download = permit + '_WaterUseData.csv';
link.href = window.URL.createObjectURL(file);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
我为我们的内部用户创建了一个 AppMaker 应用程序,以促进审批流程。 主审批人要求提供下载包含大量数据的 CSV 文件而不将其保存到 GDrive 的选项。 (我也不想采用这种方法,因为这需要 Drive 权限,当用户看到该应用程序正在请求访问其文件的权限时,他们会惊慌失措)。
所以,我得到的最深入的结果是将 window.open() 与 csv 数据一起使用,它确实下载了一个 csv 文件,但没有任何扩展名。但是,这并不优雅,而且使用它的人更难将其重命名为 download.csv 或从 Excel 打开它而不是双击它。
我在网上找到了使用带有 href 和下载属性的锚点的选项,并愉快地实现了它只是为了从 AppMaker 得到一个很好的错误,即 Anchor href 不允许以 [=22= 开头].
有什么想法吗?解决方案?
谢谢!
我为类似的功能实现了以下代码,但请注意,它只生成当前加载到数据源中的项目的数据。如果您有多页数据,则需要单独下载每一页。请注意,下载特别命名为 YourFileName.csv.
var ds = widget.datasource;
var items = ds.items;
var fields = ds.model.fields._values;
var serialized = '';
var headers = [];
var permit = widget.root.children.Panel1.datasource.item.WR_Number;
fields.forEach(function(fieldname) {
var header = fieldname.displayName;
headers.push(header);
});
serialized += headers.join(',') + '\r\n';
items.forEach(function(item) {
var values = [];
fields.forEach(function(field) {
var value = item[field.name];
var strVal = value === null ? '' : value.toString();
values.push(strVal);
});
serialized += values.join(',') + '\r\n';
});
var file = new Blob([serialized], {type: 'text/csv'});
var link = document.createElement('a');
link.download = permit + '_WaterUseData.csv';
link.href = window.URL.createObjectURL(file);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);