我得到以下代码正常运行,但是当日期字段为空时,我收到包含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
});
}
}
答案 0 :(得分:2)
您获得的原因是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
});
}
}
答案 1 :(得分:1)
如果日期为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" );
}