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