从具有空格或0的电子表格中删除列

时间:2013-05-03 16:36:18

标签: google-apps-script google-sheets

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

我目前的脚本是:

function sendFormByEmail(e) 
{    
var email = "anyone@anywhere.com"; 
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 个答案:

答案 0 :(得分:1)

您只需在向message添加回复值之前验证您的条件。

由于空白响应有时可能包含空格(因此为“非空白”),因此在测试字符串之前,首先使用.replace()方法去除任何填充。

您可以在此处调整if语句以满足您的需求:

function sendFormByEmail(e) 
{    
  var email = "anyone@anywhere.com"; 
  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); 
}