Возвращать пустое поле даты при отправке по электронной почте (Google Spreadsheet) - PullRequest
0 голосов
/ 01 июня 2018

Код ниже работает нормально, но когда поле даты пустое, я получаю письмо с соответствующим полем, содержащим 01.01.1970.Как вставить условие, которое препятствует заполнению этих полей даты?

function sendEmailbyTransporter() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Status de Embarque Integrado");

  // Get your table data
  var startRow = 27;  // First row of data to process
  var numRows = sheet.getLastRow(); // Number of rows to process
  var dataRange = sheet.getRange(startRow, 1, numRows, 12); // Fetch the range including the Minimums
  var data = dataRange.getValues(); // Fetch values for each row in the Range.

  // Loop through the data to build your table
  var message = "<html><body><table style=\"text-align:center\"><tr><th>NF</th><th>CT-E</th><th>Cliente</th><th>Cidade</th><th>UF</th><th> Previsão de Entrega</th><th>Ocorrência</th><th>Detalhe da Ocorr.</th><th>Data da Entrega</th>";
  var sendEmail = false; // If there is content to send, will be set to true
  for (var i = 0; i < data.length; ++i) {
    var rowData = data[i];
    var NF = rowData[0];
    var Email = sheet.getRange("I24:l24").getValue();
    if (NF != "") { //Checks for blank Code. If blank, then skip and don't add to the table.
      var CTE = rowData[1];
      var CTEAsDate = Utilities.formatDate(CTE, "GMT" , "dd/MM/yyyy" );
      var Cliente = rowData[4];
      var Cidade = rowData[5];
      var UF = rowData[6];
      var PrevEntrega = new Date(rowData[7]);
      var PrevEntregaAsDate = Utilities.formatDate(PrevEntrega, "GMT" , "dd/MM/yyyy" );
      var Ocorr1 = rowData[10];
      var Ocorr2 = rowData[11];
      var Entrega = new Date(rowData[12]);
      var EntregaAsDate = Utilities.formatDate(Entrega, "GMT" , "dd/MM/yyyy" );

        message += "<tr><td>"+NF+"</td><td style=\"text-align:left\">"+CTE+"</td><td>"+Cliente+"</td><td>"+Cidade+"</td><td>"+UF + "</td><td>"+PrevEntregaAsDate+"</td><td>"+Ocorr1 + "</td><td>"+Ocorr2 + "</td><td>"+EntregaAsDate + "</td></tr>";
        sendEmail = true; //There is content to send
    }
  }
  message += "</table></body></html>";
    if (sendEmail) {
      var subject = "Status de Embarque da NF " + NF + "!";
      MailApp.sendEmail({
        name: 'XXXl',
        to: Email, 
        subject: subject, 
        htmlBody: message
      });
   }
}

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Если дата null, new Date(null) вернет время эпохи - 01.01.1970 (из которого рассчитывается текущее время).Просто рассчитайте дату, только если она присутствует.

var EntregaAsDate = "";
if(rowdata[12])
{
    var Entrega = new Date(rowData[12]);
    EntregaAsDate = Utilities.formatDate(Entrega, "GMT" , "dd/MM/yyyy" );
}
0 голосов
/ 01 июня 2018

Причина, по которой вы получаете rowData[7] - null, вы можете добавить проверку на нулевое значение до вычисления даты

if(rowData[7]===null){
 // do anything you want to handle this condition
}

Здесь вышеупомянутая проверка проверяет значение null,в вашем случае вы не обрабатываете значение null, следовательно,

Следующее условие:

var PrevEntrega = new Date(rowData[7]);

Значение

var PrevEntrega = new Date(null);

дает результат:

Thu Jan 01 1970 05:30:00 GMT+0530 (India Standard Time)

Так вот ваш обновленный код:

  // Loop through the data to build your table
  var message = "<html><body><table style=\"text-align:center\"><tr><th>NF</th><th>CT-E</th><th>Cliente</th><th>Cidade</th><th>UF</th><th> Previsão de Entrega</th><th>Ocorrência</th><th>Detalhe da Ocorr.</th><th>Data da Entrega</th>";
  var sendEmail = false; // If there is content to send, will be set to true
  for (var i = 0; i < data.length; ++i) {
    var rowData = data[i];
    var NF = rowData[0];
    var Email = sheet.getRange("I24:l24").getValue();
    if (NF != "") { //Checks for blank Code. If blank, then skip and don't add to the table.
      var CTE = rowData[1];
      var CTEAsDate = Utilities.formatDate(CTE, "GMT" , "dd/MM/yyyy" );
      var Cliente = rowData[4];
      var Cidade = rowData[5];
      var UF = rowData[6];
      var PrevEntregaAsDate ="";
      if(rowData[7]){
         var PrevEntrega = new Date(rowData[7]);
         PrevEntregaAsDate = Utilities.formatDate(PrevEntrega, "GMT" , "dd/MM/yyyy" );
      }
      var Ocorr1 = rowData[10];
      var Ocorr2 = rowData[11];
      var EntregaAsDate = "";
      if(rowData[12]){
          var Entrega = new Date(rowData[12]);
          EntregaAsDate = Utilities.formatDate(Entrega, "GMT" , 
          "dd/MM/yyyy" );
      }

        message += "<tr><td>"+NF+"</td><td style=\"text-align:left\">"+CTE+"</td><td>"+Cliente+"</td><td>"+Cidade+"</td><td>"+UF + "</td><td>"+PrevEntregaAsDate+"</td><td>"+Ocorr1 + "</td><td>"+Ocorr2 + "</td><td>"+EntregaAsDate + "</td></tr>";
        sendEmail = true; //There is content to send
    }
  }
  message += "</table></body></html>";
    if (sendEmail) {
      var subject = "Status de Embarque da NF " + NF + "!";
      MailApp.sendEmail({
        name: 'XXXl',
        to: Email, 
        subject: subject, 
        htmlBody: message
      });
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...