当前位置: 首页 > 知识库问答 >
问题:

在Google Sheets/Google脚本中检查日期是否相等

穆承运
2023-03-14

我有两张表,都有保存到列中的日期。我的当前日期以相同代码保存在Sheet1和Sheet2上:

curDate = Utilities.formatDate(new Date(), "EST", "MM/dd/yyyy");

我想让我的一个脚本比较从Sheet1到Sheet2的日期

在Sheet1上,我使用一个小脚本设置当前日期,然后使用拖动功能设置列中的上一个和下一个日期,格式与此处相同:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Update Dates')
      .addItem('Set Dates', 'setDatesUp')
      .addToUi();
}

function setDatesUp(){
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Sheet1");

  var curDate = Utilities.formatDate(new Date(), "EST", "MM/dd/yyyy");

  sheet1.getRange("A4").setValue(curDate);
}

设置Sheet1上的日期后,我使用以下脚本比较Sheet1和Sheet2中的日期,此脚本还设置Sheet2的日期,因为当激活此脚本时,它应该在相应的框中标记当前日期。

function onEdit() {
  //Loops through all of Column C to determine which values are True and False
  //Saves all True Values Row # in SavedValues

  //Initialize Variables
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();
  var sheet2 = ss.getSheetByName("Sheet2");

  //Sheet 2 S2
  var cValuesS2 = sheet2.getRange("C:C").getValues();
  var dValuesS2 = sheet2.getRange("D:D").getValues();
  var lastRowS2 = sheet2.getLastRow();

  //Variables
  var curDate;
  var curVar;

  //Loops through all S2 rows, stops at last row
  for (var i = 0; i <= lastRowS2; i++){
    //Checks checkboxes in S2C:C for True OR "Complete" and adds dates in corresponding D:D cells
    if (cValuesS2[i] == "true" || cValuesS2[i] == "Complete") {
      //If D:i is empty
      if (dValuesS2[i] == "") {
        //Sets current date
        curDate = Utilities.formatDate(new Date(), "EST", "MM/dd/yyyy");
        //Set current D:i cell (*+1 offset)
        curVar = ("D" + (i + 1));
        //Sets curVar value to curDate
        sheet2.getRange(curVar).setValue(curDate);
      }
      //Checks checkboxes in S2C:C for False OR "Incomplete" and deletes dates in corresponding D:D cells
    } else if (cValuesS2[i] == "false" || cValuesS2[i] == "Incomplete") {
      //If D:i is NOT empty
      if (dValuesS2[i] != "") {
        //Set current D:i cell (*+1 offset)
        curVar = ("D" + (i + 1));
        //Sets curVar to ""
        sheet2.getRange(curVar).setValue("");
      }
    } 
  }
  updateS1();
}

最后我有了我的脚本来比较两张纸上的日期。

function updateS1() {
  //Initialize Variables
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();
  var sheet1 = ss.getSheetByName("Sheet1");
  var sheet2 = ss.getSheetByName("Sheet2");

  //Sheet 1 S1
  var aValuesS1 = sheet1.getRange("A:A").getValues();
  var lastRowS1 = sheet1.getLastRow();

  //Sheet 2 S2
  var dValuesS2 = sheet2.getRange("D:D").getValues();
  var lastRowS2 = sheet2.getLastRow();

  //Variables
  var curVar;
  var curVar2;

  //Loop through Sheet 1 until the bottom
  //For each value in S1 A I use i
  for (var i = 0; i <= lastRowS1; i++) {
    //Loop through Sheet 2 until the bottom
    //For each value in S2 D I use j
    for (var j = 0; j <= lastRowS2; j++) {
        //TODO: Compare dates from S1 A:i to S2 D:j
        //If they are the same date the if statement will execute
    }
  }
}

我已经尝试过使用以下方法

if (aValuesS1[i].toString() == dValuesS2[j].toString()) {
}

if (aValuesS1[i] == dValuesS2[j]) {
}

但这两种选择都没有奏效。我注意到,当我在记录器中获取日期的“值”时,我得到了很多我不想要或不需要的信息:

2018年10月30日星期四00:00:00 GMT-0400(美国东部时间)

而不是18年8月30日
我认为这就是为什么即使两个框显示的日期格式相同,我也无法获得“匹配”值的原因。老实说,我对如何解决这个问题感到困惑,所以任何帮助都将不胜感激。

共有1个答案

苏鸿波
2023-03-14

所以事实证明,我实际上可以在if语句中与. toString()进行比较,我的循环在Google Apps脚本中执行需要相当长的时间。

 类似资料:
  • 以下是场景: 我有一个日期和一个不同的日期格式。示例: 日期:2016-10-19 日期格式:“DD-MM-YYYY”。 我需要检查这个日期是否有效。 我尝试过跟踪事情 d.isValid()每次返回false。Moment.js解析给定格式的日期吗? 然后我尝试先在中格式化日期,然后将其传递给矩。js: 现在<代码>日期。isValid()给了我想要的结果,但现在是时候了。js日期对象创建两次。

  • 我的Java外汇应用程序处理工作时间。我在两个日期字段中有工作开始和结束时间。我成功地计算了两个日期之间的差异时间;但是现在我如何检查结果是在晚上还是白天的范围内???一天从6点开始,到22点结束。例如,有人在凌晨3点到晚上11点之间工作。下面是我如何计算总工作小时数的。 我们有可以工作到晚上10点以上的工人,工资也不一样。如果他们在晚上10点以后工作,他们将获得特殊报酬。我们在工作结束时付款。他

  • 问题内容: 该函数似乎只返回false。你们有没有一样?我敢肯定,我正在忽略一些东西,但是,新鲜的眼睛和所有这些… 我使用以下命令调用该函数: 问题答案: 如果您的PHP> = 5.1: 除此以外:

  • 我正在从Wordpress字段中获取日期,我需要检查这些日期是否已经过去或即将到来。 foreach呼应了这一点。 看起来只是检查第一天的约会。

  • 我想能够验证输入日期小时是否已经在谷歌日历中创建。 这是我得到的代码,但我现在被卡住了(谷歌快速入门教程)。这段代码给出了10个即将到来的事件。 但我希望能够输入一个日期,然后在添加之前验证事件是否已经存在。 编辑: 我尝试了这个代码,但是我得到了一个错误。 获取时出错:

  • 问题内容: 我想通过将NSDate与当前日期进行比较来检查NSDate是否在之前(过去)。我该怎么做? 谢谢 问题答案: 我找到了方法。 您也有方法。 迅速3到迅速5: