【问题标题】:compare specific days in google app script比较谷歌应用脚​​本中的特定日期
【发布时间】:2017-08-02 23:28:09
【问题描述】:

我正在制定一个考勤计划,在找到两个匹配的特定 ID 号后,我想确认用户没有意外登录/通过比较两个时间戳的日期并确保它们相同。我一直在寻找方法来比较使用 unix 开始日期的毫秒数,但不是一种按日期明确进行比较的方法。谁能帮忙谢谢

【问题讨论】:

    标签: google-apps-script google-apps


    【解决方案1】:

    如果您想比较时间戳的日期和离开的时间,您可以使用类似的方法来生成日期或时间。

    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);
    }
    

    这是我的表格,其中只有链接表格中的时间戳:

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

    将数据附加到每日工作表

    我认为这会为您解决问题。

    代码.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;
    }
    

    这是我的起始电子表格。我在末尾添加了一个名为“已完成”的列,这样当此函数再次运行时,它不会将旧数据附加到工作表中。

    这是运行代码后电子表格的样子。

    这些是已创建的工作表。

    每张纸都有数据。这是 2017 年 8 月 1 日的数据。

    【讨论】:

    • 但是,我不能将这些仅作为日期进行比较。如果我尝试使用 === 进行比较,它仍然会考虑其他变量。
    • 大多数时候我只是想确定一对日期代表同一天,在这种情况下,像我一样通过 formatDate 运行它们就可以了。就个人而言,我不经常使用 ===。我主要使用 ==。
    • 如何获取脚本中各个单元格的值?我一直在使用 sheet.getRange(1,3).getValue();
    • getDataRange() 和 getValues() 获取工作表上的所有数据,我创建了具有 3 个标题标题和 1 列数据的工作表,然后仅在第 2 列和时间中遍历每一行计算日期仅在第 3 列中
    • 好的,但我想知道的是,在对时间戳进行排序后,您用于实际比较的脚本是什么。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    相关资源
    最近更新 更多