Google 脚本将明天的日期与 google 表单日期输入匹配

Google script matching tomorrows date with a google forms date input

我试图将明天的日期与通过 google 表单提交的日期相匹配。在记录器中它似乎匹配但它不会记录 YES 并且不会评估为真。

我的努力:

function ArchiveTuesdayOrder() {
  let dt = new Date();
  let t = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1);//default for items not provided in the constructor is zero
 
  const date = new Date();
  date.setDate(date.getDate() + 1);
  var tom = Utilities.formatDate(date, "America/New_York", 'EEE MMM dd yyyy HH:mm:ss Z');
  var tomDate = Utilities.formatDate(date, "America/New_York", "MM-dd-yyyy");
  var sheetActive = SpreadsheetApp.openById("xxxxxxxxxxxxxx");
  var sheet = sheetActive.getSheetByName("xxxxxxxxxxxxxx");
  //var orderDate = sheet.getRange(2,3,100).getValues();
  var orderdateRange = sheet.getRange(2, 4, 100);
  var orderDate = orderdateRange.getValues();

  Logger.log(tom.substring(0,10))
  Logger.log(t);
  for (var i = 0; i < orderDate.length; i++) {

  Logger.log(orderDate[i])
 if (t === orderDate[i]) {    // This is what I cant get to evaluate true- No Match
    Logger.log("YES"+orderDate)
  }}}
function tomorrow() {
  let dt = new Date();
  dt.setDate(dt.getDate() + 1);
  Logger.log(dt);
  return dt.valueOf();//milliseconds can be used in numerical comparisons
}

function tomorrowstartofday() {
  let dt = new Date();
  let t = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1);//default for items not provided in the constructor is zero
  Logger.log(t);
  return t.valueOf();
}

这是一个选择一天内发生的时间戳的小例子:

假数据:

TimeStamp day type
10/11/2021 0:00:00 yesterday
10/11/2021 12:00:00 yesterday
10/12/2021 0:00:00 start of day
10/12/2021 12:00:00 today
10/13/2021 0:00:00 tomorrow
10/13/2021 12:00:00 tomorrow

代码:

function timestampsfortoday() {
  const dt = new Date();
  const tod = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();//today
  const tom = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1).valueOf();//tomorrow
  let ts = [];
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  const vs = sh.getRange(2,1,sh.getLastRow() - 1,2).getValues();
  vs.forEach(r => {
    let d = new Date(r[0]).valueOf();//using Date() constructor to get date value from timestamp
    if(d > tod && d < tom) {
      ts.push(r);
    }
  });
  Logger.log(ts.join('\n'))
}

执行日志:

9:58:44 AM  Notice  Execution started
9:58:46 AM  Info    Tue Oct 12 2021 12:00:00 GMT-0600 (Mountain Daylight Time),today
9:58:45 AM  Notice  Execution completed

它只选择了第二列中包含今天的行,因为这是今天开始到明天开始之间的唯一一行。

如果在循环中使用这一行进行比较:

if(d >= tod && d < tom)

你明白了:

Execution log
10:05:58 AM Notice  Execution started
10:05:59 AM Info    Tue Oct 12 2021 00:00:00 GMT-0600 (Mountain Daylight Time),start of day
Tue Oct 12 2021 12:00:00 GMT-0600 (Mountain Daylight Time),today
10:05:59 AM Notice  Execution completed