0

我已经看到了几个关于如何删除包含空格或 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”。

4

1 回答 1

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); 
}
于 2013-05-23T14:34:08.423 回答