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 に答える