0

我被这最后一件事困住了。

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

1 回答 1

1

每当您发现自己重复代码,使用剪切和粘贴时,请暂停并考虑编写一个函数来完成这项工作。

在这种情况下,只有当表格行非空白时,我们才能为表格行输出 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]);
}
...
于 2013-08-29T17:00:55.057 回答