Excel /表格与复制兼容的表格小部件

时间:2017-08-18 05:17:25

标签: google-app-maker

为了我的应用程序的最终用户,我尝试将数据从App Maker的基本表小部件复制到Excel和GSheets。但是,这会导致将所有数据都放在电子表格中的单个列中。

我已经注意到使用表格小部件可以进行这种复制。不过,我还需要基本的表格小部件的功能,如行点击事件。

普通用户有没有办法轻松导出到Excel(使用基本表格小部件时)?是否可以对该小部件实现这种复制可能性(即,在发出功能请求时是否有任何意义)?是否有其他建议可以让数据在其他程序中轻松使用?

提前致谢!

1 个答案:

答案 0 :(得分:1)

这不太可能由App Maker实现,因为基本表是完全可自定义的,并且可以包含任何小部件和显示模型关系。考虑将数据源项目复制到剪贴板或将它们导出到电子表格更有意义。这是一个参考代码,您可以尝试使用该数据源生成与Google Spreadsheet兼容的序列化字符串:

// 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: https://stackoverflow.com/questions/400212
copyToClipboard(serialized);

注意:此代码段将序列化所有模型字段,即使它们不在表中,但也不会序列化模型关系,即使表中有一些也是如此。如果只需要模型字段的子集,则可以明确指定它们:

...
var fieldNames = ['FieldA', 'FieldB', ......]; // actually fieldNames

...
  fieldNames.forEach(function(fieldName) {
  var value = item[fieldName];
....

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