用于将Google工作表中的值发送到电子邮件的脚本

时间:2016-11-11 20:09:26

标签: google-sheets google-form

我找到了一些脚本并尝试对其进行修改,以便它适用于我的用例,但一直遇到错误。基本上我有一个谷歌表格,当用户提交时,我希望他们刚刚输入的行发送到我的电子邮件。我一直收到一个错误:“无法从undefined中读取属性”namedValues“。(第14行,文件”代码“)”

感谢任何帮助,谢谢!!

function sendFormByEmail(e) 
{    
  var email = "dummyemail@dummy.com"; 

  var s = SpreadsheetApp.getActiveSheet();
  var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
  var message = "";
  var subject = "New Hire: ";

  // The variable e holds all the form values in an array.
  // Loop through the array and append values to the body.

  for(var i in headers) 
    message += headers[i] + ': '+ e.namedValues[headers[i]].toString() + "\n\n";     

  // Insert variables from the spreadsheet into the subject.
  subject += e.namedValues[headers[2]].toString() + " - starts " + e.namedValues[headers[15]].toString();

  // Send the email
  MailApp.sendEmail(email, subject, message); 

}

1 个答案:

答案 0 :(得分:0)

您可以检查标题[i]是否为空,替换:

message += "" + headers[i] + " : " + datarow[i] + "\n\n";

使用:

if (datarow[i] != "") {
message += "" + headers[i] + " : " + datarow[i] + "\n\n"; 
}

此外,如果您允许用户编辑他们的回复,那么您的数据行将不正确。您可以使用:

var datarow = sheet.getRange(e.range.getRow(),1,1,sheet.getLastColumn())‌.getValues()[0];