当特定日期范围超过7天时,如何编写脚本自动隐藏行

时间:2017-08-06 13:25:13

标签: google-apps-script

我是Google脚本中的新手,我想为下面的要求编写一个脚本。我已将电子表格设置为可编辑。

这是链接:

https://docs.google.com/spreadsheets/d/1sDl_umSEJtfQElOCGAgBw0mNDzZ1JGI222h_hVp7YG4/edit?usp=sharing

目标是当行内的日期范围(从今天开始超过日期和返回日期作为每行的日期范围)超过7天时自动隐藏行,并假设返回日期是DUE DATE。

注意:日期格式符合美国。

我需要这个,特别是当我将来有大量数据时。我只需要查看尚未到期的当前行。我试过这个,但它隐藏了一切。

1 个答案:

答案 0 :(得分:2)

对于第3-5行,您需要将工作表中的日期格式更正为正确的美国格式(MM-dd-yyyy)。试试下面的剧本

function hideRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = ss.getRange(2, 4,ss.getLastRow()-1).getValues();
  for(var i=0;i<range.length;i++){
      var expiryDate = getexpiryDate(range[i][0]);
      Logger.log(expiryDate)
      var today = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd");
      if(expiryDate < today){
        ss.hideRows(i+2);
      }
  }
}


 function getexpiryDate(expiryDate) {
      var result = new Date(expiryDate);
      result.setHours(0,0,0,0);
      result.setDate(result.getDate() +7);
      return result.convertDate();
    }

    Date.prototype.convertDate = function() {
      var mm = this.getMonth() + 1; 
      var dd = this.getDate();

      return [this.getFullYear(),
         (mm>9 ? '' : '0') + mm,
         (dd>9 ? '' : '0') + dd
      ].join('-');
    };