如何更改此Google App脚本以隐藏工作表列而不是基于列日期的行

时间:2019-11-24 13:35:24

标签: sql google-apps-script google-sheets

所以我要成为一名合格的程序员还有很长的路要走,但我确实涉猎Google表格脚本。

我以前有一个在计时器触发器上运行的脚本,用于根据A列中的日期隐藏行。

function min() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getSheetByName("OLD");
    var v = s.getRange("A:A").getValues();
    var today = new Date().getTime() - 86400000‬
    for (var i = s.getLastRow(); i > 1; i--) {
        var t = v[i - 1];
        if (t != "") {
            var u = new Date(t);
            if (u < today) {
                s.hideRows(i);
            }
        }
    }
}
function max() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getSheetByName("OLD");
    var v = s.getRange("A:A").getValues();
    var today = new Date().getTime() + 86400000 
    for (var i = s.getLastRow(); i > 1; i--) {
        var t = v[i - 1];
        if (t != "") {
            var u = new Date(t);
            if (u > today) {
                s.hideRows(i);
            }
        }
    }
}
function SHOWROWS() {
  // set up spreadsheet and sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet(), sheets = ss.getSheets();

  for(var i = 0, iLen = sheets.length; i < iLen; i++) {
    // get sheet
    var sh = sheets[i];

    // unhide rows
    var rRows = sh.getRange("A:A");
    sh.unhideRow(rRows);
  }
}

应将其设置为每晚的午夜运行,以便隐藏当前日期以外+ -1天的所有行。

我现在主要是通过android应用程序切换为使用此文档,我需要交换输入布局,将日期从行和列中的值移动到相反,值现在在行中,日期在列中,输入垂直值会更快。...但是说实话,它更多的是了解我做错了什么,这才真正激发了我寻找答案的动力。

任何人都可以帮助我修改旧脚本以处理此更改后的工作表。 我的尝试失败了。例如:

function min() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getSheetByName("OLD");
    var v = s.getRange("1:1").getValues();
    var today = new Date().getTime() - 86400000‬
    for (var i = s.getLastColumn(); i > 1; i--) {
        var t = v[i - 1];
        if (t != "") {
            var u = new Date(t);
            if (u < today) {
                s.hidecolumns(i);
            }
        }
    }
}

电子表格示例: https://docs.google.com/spreadsheets/d/1EjRIeDPrG_qp1S9QhInl9r3G0cZx_16OvnTXORgA3n4/edit?usp=sharing

有两张纸,一张是我的布局的旧版本“ OLD”,而我想要的新布局是“ NEW”

在此先感谢任何能够提供帮助的人

1 个答案:

答案 0 :(得分:1)

此功能可隐藏顶行日期少于昨天的列。

   function hideColumnWhenTopRowDateIsBeforeYesterday() {
      var ss=SpreadsheetApp.getActiveSpreadsheet();
      var sh=ss.getSheetByName("Sheet1");
      var rg=sh.getRange(1,1,1,sh.getLastColumn());
      var vA=rg.getValues()[0];
      var yesterday=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()-1).valueOf();
      vA.forEach(function(e,i){
        if(new Date(e).valueOf()<yesterday) {
          sh.hideColumns(i+1);
        }
      });       
    }

隐藏列之前的我的电子表格:

enter image description here

隐藏列后的我的电子表格:

enter image description here