我是Google Scripts的新手,但我很快就掌握了它的要点。我正在尝试为我们的商业打印机自动订购碳粉。我设置了一个包含4个刻度问题的Google表格,每种颜色一个(CMYK),有1到5个碳粉盒可供选择。
然后,在记录回复的Google电子表格中,我创建了一个脚本(主要来自互联网示例),该脚本获取电子表格的最后一个条目(底行)并发送一封电子邮件,其中包含所需的碳粉盒数量,并带有触发器onFormSubmit()。
当我使用表单并点击提交按钮时,没有任何反应。表单和电子表格之间似乎有脱节?也许有些触发器不起作用?我尝试使用脚本编辑器中的触发器以及可编程触发器,但它仍无法从表单提交中使用。
" ScriptApp"脚本触发器的一部分似乎没有得到Google Scripts编辑器的识别,因为它没有特定的颜色,与其他代码不同,这让我想知道我是否需要写一些形式的#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);
}
答案 0 :(得分:0)
这绝对有效。必须首先清除过去的触发器,否则会发送多封电子邮件,因为每次提交都会创建一个新的触发器:
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);
}