如何在sendmail函数中排除空字段(Google Docs脚本编辑器)

时间:2013-06-04 19:20:23

标签: html google-apps-script

我最后一件事情都被困住了。

我的脚本目前向管理员(我)发送一封电子邮件,其中包含从相关电子表格中创建的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>";

1 个答案:

答案 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]);
}
...