![](/img/trans.png)
[英]how to automatically download Google spreadsheet data using Google Apps script
[英]google apps script - form not automatically mailing spreadsheet response
我是Google脚本的新手,但是很快就能掌握它的要旨。 我正在尝试为我们的商用打印机自动订购碳粉。 我设置了一个Google表单,其中包含4个比例尺问题,每种颜色一个(CMYK),从1至5个碳粉盒中有多种选择。
然后,在记录响应的Google Spreadsheet中,我创建了一个脚本(主要来自互联网示例),该脚本获取电子表格的最后一个条目(底部行),并通过触发onFormSubmit()发送包含所需碳粉盒数量的电子邮件。 。
当我使用表单并单击“提交”按钮时,没有任何反应。 表单和电子表格之间似乎存在脱节? 也许某些触发器不起作用? 我尝试使用脚本编辑器中的触发器以及可编程触发器,但仍无法从表单提交中使用。
脚本触发器的“ ScriptApp”部分似乎未被Google脚本编辑器识别,因为它不是特定的颜色,不同于其他代码,这使我想知道是否必须编写某种形式的#include声明还是什么? 所有的互联网示例均以彩色显示ScriptApp。
“编译”时未发现错误。
function sendFormByEmail(e)
{
ScriptApp.newTrigger("sendFormByEmail").forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()).onFormSubmit().create();
var email = "example@email.com";
var s = SpreadsheetApp.getActiveSheet();
var headers = s.getRange(1,2,1,s.getLastColumn()-1).getValues()[0];
var colors = s.getRange(s.getLastRow(),2,s.getLastRow(),s.getLastColumn()-1).getValues()[0];
var message = "";
var subject = "Toner order";
for(var i in headers)
message += headers[i] + ': ' + colors[i] + "\n\n";
MailApp.sendEmail(email, subject, message);
}
这是绝对有效的答案。 必须先清除过去的触发器,否则它将发送多封电子邮件,因为它为每个提交创建了一个新触发器:
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
ScriptApp.newTrigger("sendFormByEmail").forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()).onFormSubmit().create();
function sendFormByEmail(e)
{
var email = "example@email.com";
var s = SpreadsheetApp.getActiveSheet();
var headers = s.getRange(1,2,1,s.getLastColumn()-1).getValues()[0];
var colors = s.getRange(s.getLastRow(),2,s.getLastRow(),s.getLastColumn()-1).getValues()[0];
var message = "";
var subject = "toner order";
for(var i in headers) {
message += headers[i] + ': ' + colors[i] + "\n\n";
}
MailApp.sendEmail(email, subject, message);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.