比较 google 应用脚本中的特定日期

compare specific days in google app script

我正在制作一个考勤程序,在找到两个匹配的特定 ID 号后,这是通过 google 表格收集的,我想确认用户没有通过仅比较两个时间戳的日期并确保它们相同来意外签署 in/out。我一直在寻找方法来比较从 unix 的开始日期开始的毫秒数,但不是按日期简单地进行比较的方法。有人可以帮忙谢谢

如果你想比较时间戳的日期和离开时间,你可以使用类似这样的东西来生成日期或时间。

function messinWithTime()
{
  var ss=SpreadsheetApp.getActive();
  var sht=ss.getActiveSheet();
  var rng=sht.getDataRange();
  var rngA=rng.getValues();
  for(var i=1;i<rngA.length;i++)
  {
    rngA[i][1]=Utilities.formatDate(new Date(rngA[i][0]), Session.getScriptTimeZone(), "MM/dd/yy");
    rngA[i][2]=Utilities.formatDate(new Date(rngA[i][0]), Session.getScriptTimeZone(), "HH:mm:ss");
  }
  rng.setValues(rngA);
}

这是我的 sheet,只有来自链接 sheet 的时间戳:

这是我将时间戳转换为单独的日期和时间后的sheet。

将数据附加到每日 sheets

我想这会为你做的。

Code.gs:

function movinToDailySheets()
{
  var ss=SpreadsheetApp.getActive();
  var sh0=ss.getSheetByName('Responses');
  var rg0=sh0.getDataRange();
  var rg0A=rg0.getValues();
  for(var i=0;i<rg0A.length;i++)
  {
    if(!rg0A[i][4])
    {
      var destSheet=Utilities.formatDate(new Date(rg0A[i][0]), Session.getScriptTimeZone(), "MMM dd, yyyy");
      if(!isSheet(destSheet) )
      {
        var destSht=ss.insertSheet(destSheet);
      }
      destSht.appendRow(rg0A[i]);
      sh0.getRange(i+1,5).setValue('Done');
    }
  }
}

function isSheet(name)
{
  var ss=SpreadsheetApp.getActive();
  var allsheets=ss.getSheets();
  var r=false; 
  for(var i=0;i<allsheets.length;i++)
  {
    if(name==allsheets[i].getName())
    {
      r=true;
      break;
    }
  }
  return r;
}

这是我的起始点差sheet。我在末尾添加了一个名为 "Completed" 的列,这样当这个函数再次运行时,它不会将旧数据附加到 sheets.

这是 运行 代码后的价差 sheet 的样子。

这些是已创建的 sheet。

并且每个 sheet 都有数据。这是2017年8月1日的数据。