如何获取电子邮件表单提交脚本以从工作表中排除空白响应值?

时间:2019-01-29 17:55:37

标签: email google-apps-script google-sheets-api

我正在编辑我的团队用于Google表单响应表的现有脚本。脚本每次提交时都会使用标题和响应单元自动为订单创建消息正文,大致如下:

订单类型:实物 国家:美国 电子签名: 最喜欢的颜色: 最喜欢的食物:面食

我被要求做的是让脚本通读工作表,并且不包含任何给定提交中未回答的问题的标题或答复。像这样,对于上一个示例:

订单类型:实物 国家:美国 最喜欢的食物:面食

我首先要说我在javascript或Google Apps方面拥有近0的经验。我尝试过同时使用len函数和否定的isblank函数的if子句,但无济于事。这些都会导致不确定的错误。

您会看到,原始脚本不是由我或最近几年使用它的人创建的。

Original script

function sendFormByEmail(e) 
{ 
  Logger.log('value of e is: ' + e);   
  var email = "xxx@xxx.com"; 

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

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

  // Insert variables from the spreadsheet into the subject.
  // In this case, I wanted the new hire's name and start date in the
  // email subject. These are the 3rd and 16th columns in my form.

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

  subject += e.namedValues[headers[10]].toString() + " - " + 
  e.namedValues[headers[12]].toString();


  MailApp.sendEmail(email, subject, message, {noReply:true}); 

    // Based off of a script originally posted by Amit Agarwal - www.labnol.org
}

1 个答案:

答案 0 :(得分:0)

您可以在for循环中包含对空白值的检查。

 if (e.namedValues[headers[i]].toString() === "") continue;