繁体   English   中英

我如何更改此 google 应用程序脚本以根据列日期隐藏工作表列而不是行

[英]how do I change this google app script to hide sheets columns instead of rows based on column dates

所以我在成为一名称职的程序员方面还有很长的路要走,但我确实涉足谷歌表脚本。

我以前有一个在计时器触发器上运行的脚本,以根据在 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”

提前感谢任何能够提供帮助的人

此函数隐藏顶行日期小于昨天的列。

   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);
        }
      });       
    }

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

在此处输入图片说明

隐藏列后我的电子表格:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM