我想根据第1行中的单元格中的值隐藏每个工作表上的列

时间:2013-05-15 18:58:58

标签: javascript

每次尝试此操作时都会出现错误,这就是我正在使用的内容。我收到这个错误:

TypeError: Cannot find function hideColumns in object Sheet,Sheet,Sheet,Sheet,Sheet."

我对脚本不是很熟悉,似乎无法使用它。

function Hide() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

    // look at all sheets
  var sheet = ss.getSheets();

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

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

  Logger.log(lastCol);

  // itterate through columns
  for(var i=1; i<lastCol; i++) {
     if(data.getCell(1, i).getValue()[0] == '*') {
        sheet.hideColumns(i);
     }
  }
}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我假设您正在使用this reference。我想,你想要做以下事情:

  1. 迭代数据范围内的所有列。
  2. 如果第一行列的值等于*,则隐藏该列。
  3. 我不熟悉Google Apps服务,但我认为您的代码应如下所示:

    function Hide() {
      // get active spreadsheet
      var ss = SpreadsheetApp.getActiveSpreadsheet();
    
        // look at all sheets
      //var sheet = ss.getSheets();
    
      // get data
      var data = ss.getDataRange();
    
      //get the sheet this range belongs to.
      var sheet = data.getSheet();
    
      // get number of columns
      var lastCol = data.getLastColumn()+1;
    
      Logger.log(lastCol);
    
      // itterate through columns
      for(var i=1; i<lastCol; i++) {
         if(data.getCell(1, i).getValue()[0] == '*') {
            sheet.hideColumns(i);
         }
      }
    }
    

    由于.getSheets返回数组Sheet个对象,因此您无法调用该函数。