0

脚本完成执行后,我收到消息“糟糕。无法隐藏合并开始”。

该脚本隐藏标题字段为空白的范围内的任何列,并显示那些不为空的列。我发现如果某些列与它们垂直合并,则会导致麻烦。这是电子表格的链接:https ://docs.google.com/spreadsheet/ccc?key=0AphsvceI4elpdGtTSWwtalFpT2xkUWxvNDV1cVZ1S1E&usp=sharing

脚本代码为:

var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var customColumnsRanges = activeSpreadsheet.getRangeByName("TheseOnes");

function resetColumnsVisibilityIfNotBlank() {

  var sheet = customColumnsRanges.getSheet()
  var column = customColumnsRanges.getColumn();
  var length = customColumnsRanges.getWidth();
  var customColumns = customColumnsRanges.getValues();

  for (var i = 0; i < length; ++i) {

    if (customColumns[0][i] == "") {
      sheet.hideColumns(column);
    } else {
      sheet.showColumns(column);
    }

    ++column;

  }

}

如果此单元格未合并,则没有问题。如果我手动执行此操作,则再次没有问题,但我需要自动拥有此功能。如果有人可以帮助我解决这个问题,那就太好了!

4

1 回答 1

1

用于Range.breakapart()在隐藏列之前取消合并。您需要获取要操作的范围 - 在此示例中,我们Range.offset()用于选择一列。请注意,它选择了从customColumnsRanges行到工作表底部的所有单元格。

    ...
    if (customColumns[0][i] == "") {
      // Get a range containing just this column, and break apart any merges.
      var columnRange = customColumnsRanges.offset(0,i,sheet.getMaxRows()-customColumnsRanges.getRow());
      columnRange.breakApart();
      sheet.hideColumns(column);
      Logger.log('Hiding column ' + column);
    } else {
    ...
于 2013-09-07T22:13:10.390 回答