我需要一个函数来比较两个日期以及如何更改脚本以仅使用工作日

时间:2019-08-13 10:45:46

标签: google-apps-script google-sheets

我有一个运行良好的脚本。但我正在寻找一些改进。 在H列中,我在K列中有一个日期(某些事件的开始日期),我具有带有某些状态的下拉菜单。 该脚本每天运行一次,它检查H列中的日期,如果是明天,它将在K列中显示“计划的ENG”状态。 我尝试添加的改进是:

  1. 比较日期:当前,“ H”中的日期必须采用dd:mm:yy hh:mm:ss格式(14/08/2019 01:00:00)。日期由另一个脚本填充,大多数时间都采用这种格式。但是有时候我们(很多同事)需要手动添加日期,并且如果它只是dd:mm:yy或14/08/2019 00:00:00脚本不起作用。我只能比较dd:mm:yy格式吗?
  2. 这会有点困难。我需要如果H列中的日期是星期一,那么H的值将在星期五更改。

我尝试过:

  1. 将toLocaleDateString()更改为toDateString(),但返回错误:
      

    “ TypeError:在对象中找不到函数toDateString。(第18行,文件“ plannedENG”)”

  2. 在这里,我只是认为我必须使用getDay函数,但不确定如何使用。
function defaultValue() {
  var eng_status ='Planned ENG';
  var prop = new properties();
  var tomorrow = new Date();
  tomorrow.setDate(tomorrow.getDate()+1);
//  Logger.log(tomorrow.toLocaleDateString());
  Logger.log(tomorrow.toLocaleDateString());
  for (var key in prop.enabledSheetNames) {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(prop.enabledSheetNames[key]);
    var data = ss.getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).getValues();
    for (var i = 0; i < data.length; i++) {
//      Logger.log(data[i][4].toString());
      var indexOfReqID = data[i][4].toString().indexOf("REQ-SF");
      if (indexOfReqID > -1) {
//        Logger.log('It is in sheet:' + prop.enabledSheetNames[key]);
//        Logger.log('It is in row:' + (i+1));
//        Logger.log(data[i][7].toLocaleDateString());
        if (data[i][7].toLocaleDateString() == tomorrow.toLocaleDateString() && data[i][10] == '') {
//          Logger.log('OK');
          ss.getRange((i+1), 11).setValue(eng_status);
        } 
      }   
    }
  }
}

0 个答案:

没有答案