根据单元格的内容隐藏列

时间:2014-10-28 04:40:52

标签: google-apps-script google-sheets

我的任务是根据单个单元格中的文本/值隐藏Google表格中的所有列。要隐藏的细胞范围来自&包括第22列(" U")到36 /" BE"。如果列的第1行中的值与" J812"中的值相同(即812,10),那么它就不应该被隐藏。

通过在线搜索,我已经整理了我自己的解决方案,唯一的问题是它在脚本完成时显示错误:

  

"细胞参考超出范围"。

我不知道如何让这个错误消失。

我的部分代码源自此问题:Google spreadsheets: Hide columns based on cell value

这是我的代码:

function HideColumns() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  // get data
  var data = sheet.getDataRange();

  // get number of columns
  var lastCol = data.getLastColumn()+1;
  Logger.log(lastCol);

  // iterate through columns
  for(var i = 1; i < lastCol; i++) {
    if(data.getCell(1, 21 + i).getValue() !== sheet.getRange(812, 10).getValue()) {
      sheet.hideColumns(21 + i);
    }
  }
}

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

lastCol是你的最后一列+ 1.在你的for循环中,你循环到lastCol。但是在getCell()中它是21 + i。这意味着你走得太远,因此超出了范围: - )

答案 1 :(得分:-1)

可以这样做吗?

for(var i = 1; i < (lastCol-21); i++)