button - 如何使用按钮在 Google 应用程序制造商中将表格导出为 Google 表格
问题描述
我进行了广泛研究,并尝试修改 Stack Overflow 中不同帖子以及 Google App Maker 中的模板文档中的多个示例代码集,但我终生无法使用导出和电子邮件功能。
用户记录表:
这是收集和审查数据的区域,填充表:
这些是我正在使用 的数据字段:
这是当我完成动作并通过“部署”选项卡进行导出时导出的工作表的样子:
最后,这是我根据看到的教程和示例构建 的电子邮件页面:
到目前为止我学到的东西(基于我要进入的圈子):
电子邮件似乎大多直截了当,但我不需要发送消息,只需带有主题的附件,类似于使用代码:
function sendEmail_(to, subject, body) { var emailObj = { to: to, subject: subject, htmlBody: body, noReply: true }; MailApp.sendEmail(emailObj); }
不知道如何将“正文”更改为导出的文档
- 要通过单击按钮直接导出和查看工作表,我发现最接近解决方案的是文档示例,但代码中的引用仅涉及页面上的组件。我不确定如何修改它以使用该表,以及如何更改以将其作为工作表而不是文档。
这对某些人来说似乎微不足道,但我是一个初学者,并且正在努力解决我做错的事情。我已经看了将近一个星期了。任何帮助将不胜感激。
解决方案
在最简单的形式中,您可以使用以下服务器脚本执行 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!');
}
}
推荐阅读
- google-cloud-platform - 是否可以在 GCP 的 CloudRun 上部署 Keycloak 服务?
- azure-data-factory - ADF 字符串转十进制返回 NULL 值
- python - 通过匹配从张量中删除行
- eclipse - 如何在 Eclipse e4 应用程序的菜单/工具栏中创建切换/收音机项目?
- python - 数据类型“float128”不理解
- javascript - JS 项目中的 FB.logout 给出错误“表达式的类型未定义,不是函数”
- amazon-web-services - DynamoDB 上的 transactWrite 不是跨多个表的 ACID
- python - 时间序列数据趋势
- python - 调用了多少次 teardown_appcontext ?
- html5-video - HLS 播放器:单击时清除 video.js 缓冲区