Як вызначыць, ці з'яўляецца слупок скрыты ў табліцы Google з дапамогай скрыптоў?

Я спрабую напісаць функцыю для Google Spreadsheet, які размяшчае першы і апошні слупок групы. Затым ён хавае групу, або паказвае яго, калі яно ўжо ўтоена.

Тым не менш, я не змог знайсці спосаб, каб вызначыць, ці з'яўляецца схаваны слупок ці не. Я не змог знайсці што-небудзь што-небудзь на лісце класа старонкі Google href="https://developers.google.com/apps-script/reference/spreadsheet/sheet" rel="nofollow"> https://developers.google.com/apps-script/reference/spreadsheet/sheet , і я не знайшоў эквівалент .hidden ў Excel

getColumnWidth (калонка) вяртае непрыхаваную шырыню слупка, нават калі яна схаваная.

Вось мой код:

function hideShowColumns(startCol, endCol) { 
  //endCol is one column past the last data set that should be hidden
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Transposed Data");
  //import the data from the Column Headers
  var colHeaderData = sheet.getRange(1, 1, 2, sheet.getMaxColumns()).getValues(); 
  var startColNum = 0;
  var endColNum = 0;

 //This section searches for the column names in the header rows and returns their column number
  for (var i =0; i < 2; ++i) {
    for (var j = 0; j < colHeaderData[0].length; ++j) {
      if (colHeaderData[i][j] == startCol) 
        startColNum = j;
      if (colHeaderData[i][j] == endCol) 
        endColNum = j;
    }
  }

  //This is the wrong command getColumnWidth doesn't change if column is hidden
  if (sheet.getColumnWidth(startColNum + 1) != 0) {
    sheet.hideColumns(startColNum + 2, endColNum - startColNum - 1);
    Logger.log(sheet.getColumnWidth(startColNum + 2));
    return;
  }

  //This is the wrong command getColumnWidth doesn't change if column is hidden
  if (sheet.getColumnWidth(startColNum + 1) == 0) { 
    for (var j = startColNum + 1; j < endColNum - 1; ++j) {
      sheet.unhideColumn(j);
      Logger.log(sheet.getColumnWidth(startColNum + 2));     
    }
    return;
  }
}

Дзякуй за дапамогу!

5
гэта .style.diplay == "не" ? Ці можам мы убачыць hidecolumns) <�код /> функцыі (?
дададзена аўтар David Starkey, крыніца
<�Код> .style.display прамой JS, і я думаю, што гэта можа быць тыповы спосаб утойвання рэчаў, нават праз знешнія параметры (гэта значыць. Jquery). Варта стрэл, па меншай меры? Выкарыстоўвайце кансоль распрацоўніка (F12 ў некалькіх браўзэрах) і глядзець элемента style.display , каб убачыць, калі ён змяняецца, як ён хавае/адлюстроўвае.
дададзена аўтар David Starkey, крыніца
<�Код> .style.display прамой JS, і я думаю, што гэта можа быць тыповы спосаб утойвання рэчаў, нават праз знешнія параметры (гэта значыць. Jquery). Варта стрэл, па меншай меры? Выкарыстоўвайце кансоль распрацоўніка (F12 ў некалькіх браўзэрах) і глядзець элемента style.display , каб убачыць, калі ён змяняецца, як ён хавае/адлюстроўвае.
дададзена аўтар David Starkey, крыніца
@Vijay: для (вар я = 0; г <�я>") {лістоў [I]. hideColumns (4); Лісты [I] .getRange (1, 4) .setValue ( ""); } Яшчэ {лістоў [I] .unhideColumn (лісты [I] .getRange (1, 4, лісты [I] .getMaxRows (), 1)); Лісты [I] .getRange (1, 4) .setValue ( ""); }}
дададзена аўтар Saurabh Saxena, крыніца
@Vijay: для (вар я = 0; г <�я>") {лістоў [I]. hideColumns (4); Лісты [I] .getRange (1, 4) .setValue ( ""); } Яшчэ {лістоў [I] .unhideColumn (лісты [I] .getRange (1, 4, лісты [I] .getMaxRows (), 1)); Лісты [I] .getRange (1, 4) .setValue ( ""); }}
дададзена аўтар Saurabh Saxena, крыніца
Я ўпэўнены, што вы задаяце пытанне, які адносіцца да асяроддзя распрацоўкі Google Apps Script - калі гэта так, то я б, верагодна, змяніць Javascript тэг Google-прыкладання-скрыпту .
дададзена аўтар AdamL, крыніца
Я ўпэўнены, што вы задаяце пытанне, які адносіцца да асяроддзя распрацоўкі Google Apps Script - калі гэта так, то я б, верагодна, змяніць Javascript тэг Google-прыкладання-скрыпту .
дададзена аўтар AdamL, крыніца
Мой абыходны шлях для гэтага з'яўляецца даданне ў * для загалоўкаў слупкоў для слупкоў, якія я хачу, каб схаваць. Затым я магу праверыць для * з дапамогай сцэнарыя, і схаваць або адлюстраваць гэтыя слупкі.
дададзена аўтар Sam Watkins, крыніца
Мой абыходны шлях для гэтага з'яўляецца даданне ў * для загалоўкаў слупкоў для слупкоў, якія я хачу, каб схаваць. Затым я магу праверыць для * з дапамогай сцэнарыя, і схаваць або адлюстраваць гэтыя слупкі.
дададзена аўтар Sam Watkins, крыніца
@SamWatkins клапоціцца падзяліцца сцэнарам для гэтага?
дададзена аўтар Vijay, крыніца
@SamWatkins клапоціцца падзяліцца сцэнарам для гэтага?
дададзена аўтар Vijay, крыніца
Ці можна выкарыстоўваць style.display з рэдактараў скрыптоў Google? Гэта не ў іх стандартных опцый пад іх класа дыяпазону, і я да гэтага часу не ўдалося высветліць, як выкарыстоўваць яго. Я таксама глядзеў у выкарыстанні .getWidth() але гэта вяртае колькасць слупкоў, а не шырыня кожнага слупка
дададзена аўтар Dano, крыніца
Ці можна выкарыстоўваць style.display з рэдактараў скрыптоў Google? Гэта не ў іх стандартных опцый пад іх класа дыяпазону, і я да гэтага часу не ўдалося высветліць, як выкарыстоўваць яго. Я таксама глядзеў у выкарыстанні .getWidth() але гэта вяртае колькасць слупкоў, а не шырыня кожнага слупка
дададзена аўтар Dano, крыніца
Дзякуй, я абнавіў поле, каб быць у поле Google-прыкладанняў-скрыпту замест гэтага, а таксама здымаўся пытанне на вашай спасылцы ў надзеі, што гэта будзе калі-небудзь вырашаць.
дададзена аўтар Dano, крыніца
Дзякуй, я абнавіў поле, каб быць у поле Google-прыкладанняў-скрыпту замест гэтага, а таксама здымаўся пытанне на вашай спасылцы ў надзеі, што гэта будзе калі-небудзь вырашаць.
дададзена аўтар Dano, крыніца

8 адказы

На жаль, не існуе ніякага метаду Службаў Google скрыпт, які будзе вяртаць Ці слупок або радок схаваная ці не. Вы хацелі б зорка пытанне адкрытае для яго, як спосаб а. атрымліваць абнаўлення аб праблеме і б. «Падпісаць петыцыю», так бы мовіць.

https://code.google.com/p/google-apps-script-issues/issues/detail?id=195&q=hidden%20column&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner

5
дададзена

На жаль, не існуе ніякага метаду Службаў Google скрыпт, які будзе вяртаць Ці слупок або радок схаваная ці не. Вы хацелі б зорка пытанне адкрытае для яго, як спосаб а. атрымліваць абнаўлення аб праблеме і б. «Падпісаць петыцыю», так бы мовіць.

https://code.google.com/p/google-apps-script-issues/issues/detail?id=195&q=hidden%20column&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner

5
дададзена

Абыходны. Стварыць 2 радка. Першыя заўсёды павінна мець значэнне, а другі мае набор формул. Гэтыя 2 радкі выглядаюць наступным чынам:

  |           A             |           B             |            C            |
---------------------------------------------------------------------------------
1 |                       1 |                       1 |                       1 |
2 | =NOT(SUBTOTAL(103, A1)) | =NOT(SUBTOTAL(103, B1)) | =NOT(SUBTOTAL(103, C1)) |

SUBTOTAL returns a subtotal using a specified aggregation function. The first argument 103 defines the type of function used for aggregation. The second argument is the range to apply the function to.

  • 3 азначае СЧЕТЗ і падлічвае колькасць значэнняў у дыяпазоне
  • +100 азначае ігнараваць скрытыя вочкі ў дыяпазоне.

Вынік РАЗАМ з дыяпазонам ад 1 ячэйкі будзе роўны 0, калі схаваная вочка, і 1, калі паказаная клетка. <�Код> НЕ пераварочвае яго.

Цяпер ваш можа прачытаць другі радок з вашым сцэнаром, каб даведацца, ці з'яўляецца слупок скрыты.

Вось транспонированная пытанне і адказ: https://stackoverflow.com/a/27846202/1385429

2
дададзена

Абыходны. Стварыць 2 радка. Першыя заўсёды павінна мець значэнне, а другі мае набор формул. Гэтыя 2 радкі выглядаюць наступным чынам:

  |           A             |           B             |            C            |
---------------------------------------------------------------------------------
1 |                       1 |                       1 |                       1 |
2 | =NOT(SUBTOTAL(103, A1)) | =NOT(SUBTOTAL(103, B1)) | =NOT(SUBTOTAL(103, C1)) |

SUBTOTAL returns a subtotal using a specified aggregation function. The first argument 103 defines the type of function used for aggregation. The second argument is the range to apply the function to.

  • 3 азначае СЧЕТЗ і падлічвае колькасць значэнняў у дыяпазоне
  • +100 азначае ігнараваць скрытыя вочкі ў дыяпазоне.

Вынік РАЗАМ з дыяпазонам ад 1 ячэйкі будзе роўны 0, калі схаваная вочка, і 1, калі паказаная клетка. <�Код> НЕ пераварочвае яго.

Цяпер ваш можа прачытаць другі радок з вашым сцэнаром, каб даведацца, ці з'яўляецца слупок скрыты.

Вось транспонированная пытанне і адказ: https://stackoverflow.com/a/27846202/1385429

2
дададзена

На жаль, я не змог знайсці шлях і наткнуўся на гэта перапаўненне стэка. Але я мог бы таксама падзяліць гэты сцэнар недзе.

Я выкарыстоўваю першы слупок ў якасці трымальніка месцы для - ці || Значэнне сказаць, калі яго схаваныя або паказалі. (Не самы лепшы, але яго ўсё, што я мог бы здацца, каб знайсці)

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name: "Toggle Rows",
    functionName: "toggleRows"
  },{
    name: "Hide Rows",
    functionName: "hideRows"
  },{
    name: "Show Rows",
    functionName: "showRows"
  }];
  sheet.addMenu("Script", entries);
};

function toggleRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var maxRows = sheet.getMaxRows();

  var r = sheet.getRange(1, 1, maxRows+1);
  var values = r.getValues();
  var hideRanges = [];
  var showRanges = [];

  var toggleValue = null;
  var startRow = null;

  var tmp;
  var len = values.length;
  var i;
  for (i = 0; i < len; i++) {
    tmp = values[i][0];
    if (startRow === null && (tmp === '--' || tmp === '||')) {
      startRow = i + 1;
      toggleValue = tmp;
    } else if (startRow !== null && tmp !== toggleValue) {
      if (toggleValue === '--') {
        hideRanges.push([startRow, (i + 1) - startRow]);
      } else {
        showRanges.push([startRow, (i + 1) - startRow])
      }

      if (tmp === '--' || tmp === '||') {
        startRow = i + 1;
        toggleValue = tmp;
      } else {
        startRow = null;
      }
    }
  }

  var customRange = null;
  var range = null;

  i = hideRanges.length;
  while (i--) {
    customRange = hideRanges[i];
    range = sheet.getRange(customRange[0], 1, customRange[1]);
    range.setValue('||');
    sheet.hideRows(customRange[0], customRange[1]);
  }

  i = showRanges.length;
  while (i--) {
    customRange = showRanges[i];
    range = sheet.getRange(customRange[0], 1, customRange[1]);
    range.setValue('--');
    sheet.showRows(customRange[0], customRange[1]);
  }

};

function hideRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var maxRows = sheet.getMaxRows();

  var r = sheet.getRange(1, 1, maxRows+1);
  var values = r.getValues();
  var startRow = null;

  var tmp;
  var len = values.length;
  var i;
  for (i = 0; i < len; i++) {
    tmp = values[i][0];
    if (startRow === null && (tmp === '--' || tmp === '||')) {
      startRow = i + 1;
    } else if (startRow !== null && (tmp !== '--' && tmp !== '||')) {
      var numRows = (i + 1) - startRow;
      sheet.getRange(startRow, 1, numRows).setValue('||');
      sheet.hideRows(startRow, numRows);
      startRow = null;
    }
  }

};

function showRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var maxRows = sheet.getMaxRows();

  var r = sheet.getRange(1, 1, maxRows+1);
  var values = r.getValues();
  var startRow = null;

  var tmp;
  var len = values.length;
  var i;
  for (i = 0; i < len; i++) {
    tmp = values[i][0];
    if (startRow === null && (tmp === '--' || tmp === '||')) {
      startRow = i + 1;
    } else if (startRow !== null && (tmp !== '--' && tmp !== '||')) {
      var numRows = (i + 1) - startRow;
      sheet.getRange(startRow, 1, numRows).setValue('--');
      sheet.showRows(startRow, numRows);
      startRow = null;
    }
  }

};

See here for any updates: https://gist.github.com/LiamKarlMitchell/81cef19a530261c4af93

2
дададзена

На жаль, я не змог знайсці шлях і наткнуўся на гэта перапаўненне стэка. Але я мог бы таксама падзяліць гэты сцэнар недзе.

Я выкарыстоўваю першы слупок ў якасці трымальніка месцы для - ці || Значэнне сказаць, калі яго схаваныя або паказалі. (Не самы лепшы, але яго ўсё, што я мог бы здацца, каб знайсці)

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name: "Toggle Rows",
    functionName: "toggleRows"
  },{
    name: "Hide Rows",
    functionName: "hideRows"
  },{
    name: "Show Rows",
    functionName: "showRows"
  }];
  sheet.addMenu("Script", entries);
};

function toggleRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var maxRows = sheet.getMaxRows();

  var r = sheet.getRange(1, 1, maxRows+1);
  var values = r.getValues();
  var hideRanges = [];
  var showRanges = [];

  var toggleValue = null;
  var startRow = null;

  var tmp;
  var len = values.length;
  var i;
  for (i = 0; i < len; i++) {
    tmp = values[i][0];
    if (startRow === null && (tmp === '--' || tmp === '||')) {
      startRow = i + 1;
      toggleValue = tmp;
    } else if (startRow !== null && tmp !== toggleValue) {
      if (toggleValue === '--') {
        hideRanges.push([startRow, (i + 1) - startRow]);
      } else {
        showRanges.push([startRow, (i + 1) - startRow])
      }

      if (tmp === '--' || tmp === '||') {
        startRow = i + 1;
        toggleValue = tmp;
      } else {
        startRow = null;
      }
    }
  }

  var customRange = null;
  var range = null;

  i = hideRanges.length;
  while (i--) {
    customRange = hideRanges[i];
    range = sheet.getRange(customRange[0], 1, customRange[1]);
    range.setValue('||');
    sheet.hideRows(customRange[0], customRange[1]);
  }

  i = showRanges.length;
  while (i--) {
    customRange = showRanges[i];
    range = sheet.getRange(customRange[0], 1, customRange[1]);
    range.setValue('--');
    sheet.showRows(customRange[0], customRange[1]);
  }

};

function hideRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var maxRows = sheet.getMaxRows();

  var r = sheet.getRange(1, 1, maxRows+1);
  var values = r.getValues();
  var startRow = null;

  var tmp;
  var len = values.length;
  var i;
  for (i = 0; i < len; i++) {
    tmp = values[i][0];
    if (startRow === null && (tmp === '--' || tmp === '||')) {
      startRow = i + 1;
    } else if (startRow !== null && (tmp !== '--' && tmp !== '||')) {
      var numRows = (i + 1) - startRow;
      sheet.getRange(startRow, 1, numRows).setValue('||');
      sheet.hideRows(startRow, numRows);
      startRow = null;
    }
  }

};

function showRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var maxRows = sheet.getMaxRows();

  var r = sheet.getRange(1, 1, maxRows+1);
  var values = r.getValues();
  var startRow = null;

  var tmp;
  var len = values.length;
  var i;
  for (i = 0; i < len; i++) {
    tmp = values[i][0];
    if (startRow === null && (tmp === '--' || tmp === '||')) {
      startRow = i + 1;
    } else if (startRow !== null && (tmp !== '--' && tmp !== '||')) {
      var numRows = (i + 1) - startRow;
      sheet.getRange(startRow, 1, numRows).setValue('--');
      sheet.showRows(startRow, numRows);
      startRow = null;
    }
  }

};

See here for any updates: https://gist.github.com/LiamKarlMitchell/81cef19a530261c4af93

2
дададзена

Па стане 2018 года, Google яшчэ не дадаў радкоў/COL метады бачнасці да лістоў API пакуль.

Гэта сумна, але я знайшоў яшчэ адзін спосаб:

Калі радок з'яўляецца апошнім бачным, вы не можаце схаваць гэта (тое ж самае з калонамі). Google Spreadsheet выдае памылку і паказвае вам паведамленне. Такім чынам, калі функцыя скрыпту хавае кожную радок, акрамя таго, мы хочам, каб праверыць, калі гэта не атрымоўваецца, наша радок была схаваная. Калі запуск будзе паспяховым, то гэта азначае, што наша радок была бачная.

Звярніце ўвагу, што гэтая праца вакол занадта hackerish для выкарыстання ў прадукцыйнасці адчувальнага сцэнара.

Прыклады выкарыстання:

var sheet = SpreadsheetApp.getActive().getActiveSheet()
// Is the tenth row hidden?
isRowHidden(sheet.getRange('B10')) 

// Is column B hidden?
isColumnHidden(sheet.getRange('B10'))

// Is cell B10 visible? (not in a hidden row and/or column)
!(isCellHidden(sheet.getRange('B10')))

код

/**
 * Takes the first row of a range and checks whether is hidden or not.
 * Second parameter is an optional sheet. Defaults to the active sheet.
 * @param {range} row
 * @param {sheet} [sheet]
 * @returns {boolean} True if row is hidden, false if it is visible.
 */
function isRowHidden (row, optionalSheet) {
  var ss = SpreadsheetApp.getActive()
  var sheet = optionalSheet || ss.getActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var dup = ss.duplicateActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var isHidden = false
  var rowIndex = row.getRow()
  var numRows = dup.getMaxRows()

  if (numRows === 1) {
    ss.deleteSheet(dup)
    return false
  }

  try {
    if (rowIndex === numRows ) {
      dup.hideRows(1, numRows - 1)
    } else if (rowIndex === 1) {
      dup.hideRows(rowIndex + 1, numRows - 1)
    } else {
      dup.hideRows(1, rowIndex - 1)
      dup.hideRows(rowIndex + 1, numRows - rowIndex)
    }
    isHidden = false
  } catch (e) {
    isHidden = true    
  } finally {
    ss.deleteSheet(dup)
  }

  return isHidden
}

/**
 * Takes the first column of a range and checks whether is hidden or not.
 * Second parameter is an optional sheet. Defaults to the active sheet.
 * @param {range} column
 * @param {sheet} [sheet]
 * @returns {boolean} True if column is hidden, false if it is visible.
 */
function isColumnHidden (col, optionalSheet) {
  var ss = SpreadsheetApp.getActive()
  var sheet = optionalSheet || ss.getActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var dup = ss.duplicateActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var isHidden = false
  var colIndex = col.getColumn()
  var numCols = dup.getMaxColumns()

  if (numCols === 1) {
    ss.deleteSheet(dup)
    return false
  }

  try {
    if (colIndex === numCols ) {
      dup.hideColumns(1, numCols - 1)
    } else if (colIndex === 1) {
      dup.hideColumns(colIndex + 1, numCols - 1)
    } else {
      dup.hideColumns(1, colIndex - 1)
      dup.hideColumns(colIndex + 1, numCols - colIndex)
    }
    isHidden = false
  } catch (e) {
    isHidden = true    
  } finally {
    ss.deleteSheet(dup)
  }

  return isHidden
}

/**
 * Takes the first cell of a range and checks whether is hidden or not.
 * Second parameter is an optional sheet. Defaults to the active sheet.
 * @param {range} cell
 * @param {sheet} [sheet]
 * @returns {boolean} True if cell is hidden, false if it is visible.
 */
function isCellHidden (cell, optionalSheet) {
  var isHidden = isColumnHidden(cell, optionalSheet) || isRowHidden(cell, optionalSheet)
  return isHidden
}

PS: код follows JS Standard Style.

JavaScript Style Guide

1
дададзена

Па стане 2018 года, Google яшчэ не дадаў радкоў/COL метады бачнасці да лістоў API пакуль.

Гэта сумна, але я знайшоў яшчэ адзін спосаб:

Калі радок з'яўляецца апошнім бачным, вы не можаце схаваць гэта (тое ж самае з калонамі). Google Spreadsheet выдае памылку і паказвае вам паведамленне. Такім чынам, калі функцыя скрыпту хавае кожную радок, акрамя таго, мы хочам, каб праверыць, калі гэта не атрымоўваецца, наша радок была схаваная. Калі запуск будзе паспяховым, то гэта азначае, што наша радок была бачная.

Звярніце ўвагу, што гэтая праца вакол занадта hackerish для выкарыстання ў прадукцыйнасці адчувальнага сцэнара.

Прыклады выкарыстання:

var sheet = SpreadsheetApp.getActive().getActiveSheet()
// Is the tenth row hidden?
isRowHidden(sheet.getRange('B10')) 

// Is column B hidden?
isColumnHidden(sheet.getRange('B10'))

// Is cell B10 visible? (not in a hidden row and/or column)
!(isCellHidden(sheet.getRange('B10')))

код

/**
 * Takes the first row of a range and checks whether is hidden or not.
 * Second parameter is an optional sheet. Defaults to the active sheet.
 * @param {range} row
 * @param {sheet} [sheet]
 * @returns {boolean} True if row is hidden, false if it is visible.
 */
function isRowHidden (row, optionalSheet) {
  var ss = SpreadsheetApp.getActive()
  var sheet = optionalSheet || ss.getActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var dup = ss.duplicateActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var isHidden = false
  var rowIndex = row.getRow()
  var numRows = dup.getMaxRows()

  if (numRows === 1) {
    ss.deleteSheet(dup)
    return false
  }

  try {
    if (rowIndex === numRows ) {
      dup.hideRows(1, numRows - 1)
    } else if (rowIndex === 1) {
      dup.hideRows(rowIndex + 1, numRows - 1)
    } else {
      dup.hideRows(1, rowIndex - 1)
      dup.hideRows(rowIndex + 1, numRows - rowIndex)
    }
    isHidden = false
  } catch (e) {
    isHidden = true    
  } finally {
    ss.deleteSheet(dup)
  }

  return isHidden
}

/**
 * Takes the first column of a range and checks whether is hidden or not.
 * Second parameter is an optional sheet. Defaults to the active sheet.
 * @param {range} column
 * @param {sheet} [sheet]
 * @returns {boolean} True if column is hidden, false if it is visible.
 */
function isColumnHidden (col, optionalSheet) {
  var ss = SpreadsheetApp.getActive()
  var sheet = optionalSheet || ss.getActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var dup = ss.duplicateActiveSheet()
  SpreadsheetApp.setActiveSheet(sheet)
  var isHidden = false
  var colIndex = col.getColumn()
  var numCols = dup.getMaxColumns()

  if (numCols === 1) {
    ss.deleteSheet(dup)
    return false
  }

  try {
    if (colIndex === numCols ) {
      dup.hideColumns(1, numCols - 1)
    } else if (colIndex === 1) {
      dup.hideColumns(colIndex + 1, numCols - 1)
    } else {
      dup.hideColumns(1, colIndex - 1)
      dup.hideColumns(colIndex + 1, numCols - colIndex)
    }
    isHidden = false
  } catch (e) {
    isHidden = true    
  } finally {
    ss.deleteSheet(dup)
  }

  return isHidden
}

/**
 * Takes the first cell of a range and checks whether is hidden or not.
 * Second parameter is an optional sheet. Defaults to the active sheet.
 * @param {range} cell
 * @param {sheet} [sheet]
 * @returns {boolean} True if cell is hidden, false if it is visible.
 */
function isCellHidden (cell, optionalSheet) {
  var isHidden = isColumnHidden(cell, optionalSheet) || isRowHidden(cell, optionalSheet)
  return isHidden
}

PS: код follows JS Standard Style.

JavaScript Style Guide

1
дададзена