Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google Sheets基于今天隐藏X行';日期_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script Google Sheets基于今天隐藏X行';日期

Google apps script Google Sheets基于今天隐藏X行';日期,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我命名了所有行数相同的区域(21),所有命名区域都以包含日期的单元格开头。当日期比今天的日期早时,我想隐藏其日期单元格下的所有行。或者,隐藏紧跟在日期之后的关联的21行。我不知道如何写剧本,但我会学的。我也发现我不能问一个问题,很抱歉 我在stackoverflow中发现一个脚本,用于隐藏日期早于今天的行: function hideRows() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName

我命名了所有行数相同的区域(21),所有命名区域都以包含日期的单元格开头。当日期比今天的日期早时,我想隐藏其日期单元格下的所有行。或者,隐藏紧跟在日期之后的关联的21行。我不知道如何写剧本,但我会学的。我也发现我不能问一个问题,很抱歉

我在stackoverflow中发现一个脚本,用于隐藏日期早于今天的行:

function hideRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("MON");
var v = s.getRange("A:A").getValues();
var today = new Date();
today.setHours(0, 0, 0, 0);
for (var i = s.getLastRow(); i > 2; i--) {
    var t = v[i - 1];
    if (t != "") {
        var u = new Date(t);
        if (u < today) {
            s.hideRows(i);
            }
        }
    }
}
函数hideRows(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var s=ss.getSheetByName(“MON”);
var v=s.getRange(“A:A”).getValues();
var today=新日期();
今天,设定时间(0,0,0,0);
对于(var i=s.getLastRow();i>2;i--){
var t=v[i-1];
如果(t!=“”){
var u=新日期(t);
如果(u<今天){
s、 希德罗斯(i);
}
}
}
}
打开工作表时,我希望日期早于今天的行会导致接下来的21行被隐藏。

尝试以下操作:

这将获取活动工作表上的所有范围

function hideNamedRange() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rgA=sh.getNamedRanges();
  var dv=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()).valueOf();
  for(var i=0;i<rgA.length;i++) {
    var vA=rgA[i].getRange().getValues();
    if(vA[0][0] && new Date(vA[0][0]).valueOf()<dv) {
      sh.hideRows(rgA[i].getRange().getRow(), rgA[i].getRange().getHeight());
    }
  }
}
函数hideNamedRange(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rgA=sh.getNamedRanges();
var dv=新日期(新日期().getFullYear(),新日期().getMonth(),新日期().getDate()).valueOf();

对于(var i=0;i)您的脚本不会尝试对命名范围执行任何操作。欢迎使用。术语“命名范围”在Google Sheets上下文中有特殊含义。您是指此含义还是指其他含义?我理解我不应该使用术语“命名范围”。由于每个命名区域的行数相同,但日期不同,我认为仅隐藏行可能比隐藏命名区域更容易。@GaryFuller请回答您的问题以澄清“命名区域”的含义,并添加您试图根据需要调整脚本的内容。
function hideNamedRange() {
  var ss=SpreadsheetApp.getActive();
  var rgA=ss.getNamedRanges();
  var dv=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()).valueOf();
  for(var i=0;i<rgA.length;i++) {
    var rg=rgA[i].getRange();
    var sh=rg.getSheet();
    var vA=rg.getValues();
    if(vA[0][0] && new Date(vA[0][0]).valueOf()<dv) {
      sh.hideRows(rgA[i].getRange().getRow(), rgA[i].getRange().getHeight());
    }
  }
}