Javascript 谷歌脚本-仅当当天相等时才从电子表格中提取行数据

Javascript 谷歌脚本-仅当当天相等时才从电子表格中提取行数据,javascript,date,google-apps-script,google-sheets,Javascript,Date,Google Apps Script,Google Sheets,情境: 我有以下脚本,请给我发送一封带有已关闭票据的电子邮件#。 问题: 此脚本将向我发送任何截止日期的所有已关闭票据。我需要你只给我寄当天的票。 关闭日期栏的格式为日期“29/11/2016 12:34:00”。 函数emailv2(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var Support=ss.getSheetByName(“历史”); var lastrow=Support.getLastRow(); var

情境:
我有以下脚本,请给我发送一封带有已关闭票据的电子邮件#。

问题:

此脚本将向我发送任何截止日期的所有已关闭票据。我需要你只给我寄当天的票。

关闭日期栏的格式为日期“29/11/2016 12:34:00”。

函数emailv2(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var Support=ss.getSheetByName(“历史”);
var lastrow=Support.getLastRow();
var data1=Support.getRange(3,1,lastrow).getValues();//票证列
var data2=Support.getRange(3,2,lastrow).getValues();//注释列
var data3=Support.getRange(3,3,lastrow).getValues();//状态列
var data4=Support.getRange(3,9,lastrow).getValues();//关闭日期列
var date=Utilities.formatDate(新日期(),“GMT-3”,“dd/MM/yyyy HH:MM”);//功能日期+格式
var report=“”
var supportTable=“”;
用于(数据3中的变量i){
如果(数据3[i]=“已关闭”)支持表+=“已关闭”
+“+data2[i]
+“+data3[i]
+ "";
}
report=“Estimados:

Les envio el shift

票证#评论状态“+supportTable+”; MailApp.sendEmail(“example@gmail.com", “换班-”+日期, 报告,, {name:'自动电子邮件程序脚本', htmlBody:report}); }
我添加了一个函数来测试日期,并编辑了if语句来使用它:

function emailv2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var Support = ss.getSheetByName("Historic");
  var lastrow = Support.getLastRow();

  var data1 = Support.getRange(3, 1, lastrow).getValues(); // Ticket# Column
  var data2 = Support.getRange(3, 2, lastrow).getValues(); // Comment Column
  var data3 = Support.getRange(3, 3, lastrow).getValues(); // Status Column
  var data4 = Support.getRange(3, 9, lastrow).getValues(); // Close Date Column

  var date = new Date()

  var report = " "
  var supportTable ="";
  for(var i in data3){
    if((data3[i]=='Closed') && (testDate(data4[i][0], date))) supportTable += "<tr><td style='color:blue;padding:5px'>" + "<a href=http://drsc.nubicua.net/otrs/index.pl?Action=AgentTicketZoom;TicketNumber="+data1[i]+">"+data1[i]+"</a>" 
                                      + "</td><td style='padding:5px'>" + data2[i] 
                                      + "</td><td style='padding:5px'>" + data3[i] 
                                      + "</td></tr>";

  }

  report ="Estimados: <br><br> Les envio el shift <br><br><table style='border-collapse:collapse;'border = 1 cellpadding = 5; align='center'><tr><th style='background-color:black;color:white'>Ticket#</th><th style='background-color:black;color:white'>Comment</th><th style='background-color:black;color:white'>Status</tr>" + supportTable + "</table>";

  MailApp.sendEmail("example@gmail.com",
                    "Shift Change -" + date, 
                    report, 
                    {name: 'Automatic Emailer Script',
                    htmlBody: report});
}

function testDate (dateToTest1,dateToTest2) {
    return (dateToTest1.getFullYear() === dateToTest2.getFullYear()) &&
           (dateToTest1.getMonth() === dateToTest2.getMonth()) &&
           (dateToTest1.getDate() == dateToTest2.getDate());
}
然后将If更改为:

if((data3[i]=='Closed') && (date === data4))

请注意,这是未经测试的,因为我没有您的电子表格的副本,但应该可以得到您想要的。

由于电子表格以日期格式存储值,您可以使用简单的日期方法将存储的日期与今天的日期进行比较,而不是将其转换为字符串

  var today = new Date();
  today.setHours(0,0,0,0);

  var status = Support.getRange(3, 3, lastrow).getValue(); // Status Column
  var closed = Support.getRange(3, 9, lastrow).getValue(); // Close Date Column
  closed.setHours(0,0,0,0);

  if ((status === "CLOSED") && (today - closed === 0))
    // do processing

嗨,现在不工作,没有任何争吵脚本是Email>EmailV2Great。。。现在正在工作。。。我认为这是一个格式问题。。。非常感谢您为开放案例复制了这段代码,但是当我运行它时,得到了错误getfullyear notfound@LADServiceDesk确保将日期传递给testDate函数。如果传递的值不是日期类型,而是字符串,则会发生错误。我的意思是,在使用close date working运行它时。。。但是当我试着用打开的箱子跑的时候,没有用。“TypeError:No se puede encontral la función getFullYear en el objeto”表示找不到函数getFullYear。我还手动将格式化应用于所有单元格,但不起作用。与momment的“关闭日期”列相同的格式不起作用返回格式化日期错误
if((data3[i]=='Closed') && (date === data4))
  var today = new Date();
  today.setHours(0,0,0,0);

  var status = Support.getRange(3, 3, lastrow).getValue(); // Status Column
  var closed = Support.getRange(3, 9, lastrow).getValue(); // Close Date Column
  closed.setHours(0,0,0,0);

  if ((status === "CLOSED") && (today - closed === 0))
    // do processing