根据日期范围对 Google 隐藏列的脚本进行故障排除

Troubleshoot Google Script for Hiding Columns based on date range

更正

我有一个 google sheet 每周数据 table(一年的价值)。

https://docs.google.com/spreadsheets/d/1u5o0rqEFTiGcZygtbMcohuQAWn6AxfXF78c4Vjp2D8g/edit#gid=84545445

在 sheet 的顶部,我有 "to" 和 "from" 日期字段。

我试图通过隐藏与 "to"/"from" 范围之外的日期相关的所有列来限制用户的视图。

我研究了如何做到这一点,但显然无法正确制作脚本。

UPDATE I have now corrected this but my script will only hide the first column no matter what dates I have in the "to"/"from" cells. Script exactly as below.

谢谢。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('NEW - HOURS'); 
  var startColumn = 5; 
  var values = s.getRange('E7:BD7').getValues(); 
  var start = s.getRange('B4').getValue();
  var end = s.getRange('B5').getValue();
  var column, len, date, hideCount = 0, showCount = 0;

  for (column = values.length - 1; column >= 0; --column) {
    date = values[column][0];

    if ( typeof date != 'object' ||  !(date >= start && date < end) ) {
     if (showCount) {
        s.showColumns(column + startColumn + 1, showCount);
        showCount = 0;
      }
      hideCount++;
    } else {
      if (hideCount) {
        s.hideColumns(column + startColumn + 1, hideCount);
        hideCount = 0;
      }
      showCount++;
    }
  }
  if (showCount) s.showColumns(column + startColumn + 1, showCount);
  if (hideCount) s.hideColumns(column + startColumn + 1, hideCount);
}

注意行列表示法

请注意,范围是一个二维数组,其中外部数组对应行,嵌套数组对应列,可以从方法中提取 getRange(row, column).

因此,values 矩阵定义为 values[row][column]values.length 将为您提供行数 - 对于列数,请使用 values[0].length .

综上所述,你需要改变

for (column = values.length - 1; column >= 0; --column) {
    date = values[column][0];
    ...

  for (column = values[0].length - 1; column >= 0; --column) {
    date = values[0][column];
    ...

ADDITIONAL UPDATE:

    function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('NEW - HOURS'); 
  var startColumn = 5; 
  var values = s.getRange('E7:7').getValues();