繁体   English   中英

Google Apps脚本-表单不会自动邮寄电子表格响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM