哎呀.无法隐藏合并开始

Oops. It is not possible to have the merge start hidden

本文关键字:合并 开始 隐藏 哎呀      更新时间:2023-09-26

脚本执行完毕后,我收到消息"Oops.不可能隐藏合并开始"。

该脚本隐藏范围中标题字段为空的任何列,并显示不为空的列。我发现,如果某些列有垂直合并,就会导致问题。这是电子表格的链接:https://docs.google.com/spreadsheet/ccc?key=0AphsvceI4elpdGtTSWwtalFpT2xkUWxvNDV1cVZ1S1E&usp=共享

脚本代码为:

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;
  }
}

如果这些细胞没有融合,那么就没有问题。如果我手动完成,那么也没有问题,但我需要自动拥有此功能。如果有人能帮我解决这个问题,那就太好了!

在隐藏列之前,使用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 {
    ...