Excel/Sheets 复制兼容 table 小部件
Excel/Sheets copy-compatible table widget
为了我的应用程序的最终用户,我尝试将数据从 App Maker 的基本 table 小部件复制到 Excel 和 GSheets。但是,这会导致电子表格中的所有数据都集中在一个列中。
我已经注意到使用 table 图表小部件可以进行这种复制。尽管如此,我仍需要 table 小部件的基本功能,例如行点击事件。
有没有什么方法可以让普通用户轻松导出到 Excel(同时使用基本的 table 小部件)?这种复制的可能性可以实现到那个小部件吗(即提出功能请求是否有意义)?还有其他建议可以使数据在其他程序中轻松使用吗?
提前致谢!
这不太可能由 App Maker 实现,因为基本 table 是完全可定制的,并且还可以包含任何小部件和显示模型关系。考虑将数据源项目复制到剪贴板或将它们导出到电子表格更有意义。这是一个参考代码,您可以尝试使用它从数据源生成与 Google 电子表格兼容的序列化字符串:
// onClick event handler for 'copy to clipboard' button
var ds = app.datasources.MyDatasource;
var items = ds.items;
var fields = ds.model.fields._values;
var serialized = '';
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('\t') + '\n';
});
// You can find how to implement copying to clipboard
// here:
copyToClipboard(serialized);
注意:此代码片段将序列化所有模型字段,即使它们不存在于 table 中,但不会序列化模型关系,即使存在一些在您的 table 中。如果您只需要模型字段的子集,您可以明确指定它们:
...
var fieldNames = ['FieldA', 'FieldB', ......]; // actually fieldNames
...
fieldNames.forEach(function(fieldName) {
var value = item[fieldName];
....
要序列化模型的关系,您需要付出更多努力...
为了我的应用程序的最终用户,我尝试将数据从 App Maker 的基本 table 小部件复制到 Excel 和 GSheets。但是,这会导致电子表格中的所有数据都集中在一个列中。
我已经注意到使用 table 图表小部件可以进行这种复制。尽管如此,我仍需要 table 小部件的基本功能,例如行点击事件。
有没有什么方法可以让普通用户轻松导出到 Excel(同时使用基本的 table 小部件)?这种复制的可能性可以实现到那个小部件吗(即提出功能请求是否有意义)?还有其他建议可以使数据在其他程序中轻松使用吗?
提前致谢!
这不太可能由 App Maker 实现,因为基本 table 是完全可定制的,并且还可以包含任何小部件和显示模型关系。考虑将数据源项目复制到剪贴板或将它们导出到电子表格更有意义。这是一个参考代码,您可以尝试使用它从数据源生成与 Google 电子表格兼容的序列化字符串:
// onClick event handler for 'copy to clipboard' button
var ds = app.datasources.MyDatasource;
var items = ds.items;
var fields = ds.model.fields._values;
var serialized = '';
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('\t') + '\n';
});
// You can find how to implement copying to clipboard
// here:
copyToClipboard(serialized);
注意:此代码片段将序列化所有模型字段,即使它们不存在于 table 中,但不会序列化模型关系,即使存在一些在您的 table 中。如果您只需要模型字段的子集,您可以明确指定它们:
...
var fieldNames = ['FieldA', 'FieldB', ......]; // actually fieldNames
...
fieldNames.forEach(function(fieldName) {
var value = item[fieldName];
....
要序列化模型的关系,您需要付出更多努力...