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];
....

要序列化模型的关系,您需要付出更多努力...