2013-05-03 98 views
0

我已经看到几个脚本列出了如何删除包含空白或0的行,但是我有一个表单,并且一旦提交了响应就会输入最后一行。该表格有必填字段,但也有不需要回答的字段。对于没有回复的专栏,我希望在表单提交后不要在邮件中显示标题。如果我使用处理行的脚本,所有的信息都会被删除。删除空白或0的电子表格中的列

我现在的脚本是:

function sendFormByEmail(e) 
{  
var email = "[email protected]"; 
var subject = "Form Submitted"; 
var s = SpreadsheetApp.getActiveSheet(); 
var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];  
var message = "";  

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

MailApp.sendEmail(email, subject, message); 
} 

现在如果人填写表单不提供响应我得到如下:

Cell Number = 

我想只得到头在回应和消除任何空白或“0”。

回答

1

在将响应值添加到message之前,您只需验证您的条件。由于空白响应有时可能包含空格(因此为“非空白”),所以首先使用.replace()方法在测试字符串之前去除任何填充。

你可以在这里调整if语句来满足您的需求:

function sendFormByEmail(e) 
{  
    var email = "[email protected]"; 
    var subject = "Form Submitted"; 
    var s = SpreadsheetApp.getActiveSheet(); 
    var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];  
    var message = "";  

    for(var i in headers) { 
    var value = e.namedValues[headers[i]] 
       .toString() 
       .replace(/(^\s+|\s+$)/g, ''); // Remove padding 
    // Only report form responses that aren't blank or 0. 
    if (value.length > 0 && value != '0') { 
     message += headers[i] + ' = '+ value + "\n\n"; 
    } 
    } 

    MailApp.sendEmail(email, subject, message); 
} 
+0

Mogsdad - 谢谢你这么多。它完美的作品!我感谢你的帮助 - 你是摇滚明星。 – 2013-05-23 21:04:22