首页 > 解决方案 > 谷歌表格 - 希望在输入日期超过今天的日期后隐藏行

问题描述

我对创建在 Google 表格中运行的脚本不太熟悉。

但是,一旦输入日期超过今天的日期,我希望能够隐藏任何给定的行。我已附上表格。

电子表格

有人可以帮助我吗?

标签: google-apps-scriptgoogle-sheetsspreadsheet

解决方案


尝试这个:

function hideOldRows(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var dt=new Date();
  var tdv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
  for(var i=1;i<vA.length;i++) {
    if(new Date(vA[i][2]).valueOf()<tdv){
      sh.hideRows(i+1);
    }
  }
}

如果与触发器一起使用:

function hideOldRows(e){
  var rg=e.range;
  var sh=rg.getSheet();
  var inclA=['Patrick'];//You can add other sheet names to the included list of sheets. The function will return for other sheets on the next line.
  if(inclA.indexOf(sh.getName())==-1){return;}
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var dt=new Date();
  var tdv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
  for(var i=1;i<vA.length;i++) {
    if(new Date(vA[i][2]).valueOf()<tdv){
      sh.hideRows(i+1);
    }
  }
}

您不能从脚本编辑器运行此函数,因为 onEdit 触发器在此函数中提供了一个由该函数中的字母 e 表示的事件对象,这是该函数所必需的。请阅读此参考


推荐阅读