我是 Google 脚本新手,但很快就掌握了它的要点。我正在尝试为我们的商业打印机自动订购碳粉。我设置了一个包含 4 个比例问题的 Google 表单,每种颜色 (CMYK) 一个,并有 1 到 5 个碳粉盒的多种选择。
然后,在记录响应的 Google 电子表格中,我创建了一个脚本(主要来自互联网示例),该脚本获取电子表格的最后一个条目(底行),并通过触发器发送一封包含所需碳粉盒数量的电子邮件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);
}
关于javascript - 谷歌应用程序脚本 - 表单不会自动邮寄电子表格响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908399/