我最后一件事情都被困住了。
我的脚本目前向管理员(我)发送一封电子邮件,其中包含从相关电子表格中创建的Google表单中输入的所有字段。
某些字段不是必填字段,因此在电子邮件中显示为空白。如果该字段未填写,我希望在电子邮件中看不到它。
这可能吗?
这是我目前的剧本
var emailAddress = Session.getActiveUser().getEmail();
var body = "<HTML><BODY>"
+ "<P>" + "New Form submitted on: " + data[0][0] // timestamp
+ "<table id='vertical-1'>"
+ "<table align='left'>"
+ "</table>"
+ "<font = 'Verdana'>"
+ "<width = '600px'>"
+ "<tr>"
+ "<th align='left'>CRC Representative:</th>" // change
+ "<td>"+ data[0][1] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Customer Name:</th>"
+ "<td>"+ data[0][2] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Drivers Name:</th>"
+ "<td>"+ data[0][3] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Address:</th>"
+ "<td>"+ data[0][4] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Primary Phone:</th>" // change
+ "<td>"+ data[0][5] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Secondary Phone:</th>" // change
+ "<td>"+ data[0][6] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Email Address:</th>" // change
+ "<td>"+ data[0][7] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Year and Model:</th>" // change
+ "<td>"+ data[0][9] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>VIN:</th>" // change
+ "<td>"+ data[0][10] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Current Mileage:</th>" // change
+ "<td>"+ data[0][11] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Purchase Type:</th>" // change
+ "<td>"+ data[0][12] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Retail Dealer:</th>" // change
+ "<td>"+ data[0][13] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>New or Used:</th>" // change
+ "<td>"+ data[0][14] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Purchase Date:</th>" // change
+ "<td>"+ data[0][16] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Is it Certified/Select?:</th>" // change
+ "<td>"+ data[0][17] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>AMM:</th>" // change
+ "<td>"+ data[0][18] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Servicing Retailers:</th>" // change
+ "<td>"+ data[0][19] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>In service now?:</th>" // change
+ "<td>"+ data[0][20] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>What retailer and when did it arrive?:</th>" // change
+ "<td>"+ data[0][21] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Is the customer making an appointment?:</th>" // change
+ "<td>"+ data[0][22] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Why Not?:</th>" // change
+ "<td>"+ data[0][23] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>When:</th>" // change
+ "<td>"+ data[0][24] +"</td>"
+ "</tr>"
+ "<tr>"
+ "<th align='left'>Brief Description of the issues and why the demand has been made:</th>" // change
+ "<td>"+ data[0][25] +"</td>"
+ "</tr>"
+ "</table>"
+ "</HTML></BODY>";
答案 0 :(得分:1)
每当你发现自己重复代码时,使用cut&amp;粘贴,暂停并考虑编写一个函数来代替工作。
在这种情况下,这里是我们如何只为非空白的情况下为表行喷出HTML:
function addRowIfData( heading, item ) {
var rowHtml = '';
if (item && item !== '') {
rowHtml = "<tr>"
+ "<th align='left'>" + heading + "</th>"
+ "<td>"+ data[0][1] +"</td>"
+ "</tr>"
}
return rowHtml;
}
这就是你的原始代码崩溃的原因。我遗漏了许多表格,但你明白了。
var emailAddress = Session.getActiveUser().getEmail();
var body = "<HTML><BODY>"
+ "<P>" + "New Form submitted on: " + data[0][0] // timestamp
+ "<table id='vertical-1'>"
+ "<table align='left'>"
+ "</table>"
+ "<font = 'Verdana'>"
+ "<width = '600px'>"
+ addRowIfData('CRC Representative:', data[0][1]);
+ addRowIfData('Customer Name:', data[0][2]);
+ addRowIfData('Drivers Name:', data[0][3]);
+ addRowIfData('Address:', data[0][4]);
+ addRowIfData('Primary Phone:', data[0][5]);
+ addRowIfData('Secondary Phone:', data[0][6]);
+ addRowIfData('Email Address:', data[0][7]);
+ addRowIfData('Year and Model:', data[0][8]);
// And So on...
+ addRowIfData('Brief Description of the issues and why the demand has been made:', data[0][25]);
+ "</table>"
+ "</HTML></BODY>";
现在,如果您将这些标题放入数组中,则可以将代码更改为:
...
for (row=0; row<data.length; row++) {
addRowIfData(header[row],data[0][row]);
}
...