簡體   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