如何使用按钮在谷歌应用程序制造商中将表格导出为谷歌表格

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

我看了很多,并尝试修改Stack Overflow中不同帖子上的多个代码示例集以及Google App Maker中的模板文档,但在我的生活中不能获得导出和电子邮件功能。

UserRecords table

这是收集和审查数据的区域。

Populated table

这些是我正在使用的领域:

Data Fields

当我通过“运动”并通过“部署”选项卡导出时,这就是导出的工作表的样子:

Export Sheet

最后,这是我根据我见过的教程和示例构建的电子邮件页面:

Email Page

到目前为止我学到的东西(基于我要围绕的圈子):1。电子邮件似乎大部分都是直接的,但我不需要发送消息,只需要附加主题的附件,类似于使用码:

    function sendEmail_(to, subject, body) {
     var emailObj = {
     to: to,
     subject: subject,
     htmlBody: body,
     noReply: true
     };

    MailApp.sendEmail(emailObj);
    }

不确定如何将“正文”更改为导出的文档

  1. 要直接导出并从按钮单击查看工作表,我找到的最接近解决方案的是Document Sample,但代码中的引用只与页面上的组件对话。我不知道如何修改它以使用该表,以及如何更改以将其作为工作表而不是文档。

这对某些人来说似乎微不足道,但我是一个初学者,我正在努力绕过我做错的事情。我已经看了将近一个星期了。任何帮助将不胜感激。请不要惹我生气! :)

button google-sheets export email-attachments google-app-maker
1个回答
2
投票

在最简单的形式中,您可以使用以下服务器脚本执行Google表格导出(这基于名为employees的模型):

function exportEmployeeTable() {

  //if only certain roles or individuals can perform this action include proper validation here

  var query = app.models.Employees.newQuery();
  var results = query.run();

  var fields = app.metadata.models.Employees.fields;

  var data = [];

  var header = [];

  for (var i in fields) {
    header.push(fields[i].displayName);
  }

  data.push(header);

  for (var j in results) {
    var rows = [];
    for (var k in fields) {
      rows.push(results[j][fields[k].name]);
    }
    data.push(rows);
  }

  if (data.length > 1) {
    var ss = SpreadsheetApp.create('Employee Export');
    var sheet = ss.getActiveSheet();
    sheet.getRange(1,1,data.length,header.length).setValues(data);

    //here you could return the URL for your spreadsheet back to your client by setting up a successhandler and failure handler
    return ss.getUrl();
  } else {
    throw new app.ManagedError('No Data to export!');
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.