原则上getRange(row, column)只返回最后一列(只传递两个参数返回一个带有单个单元格的“范围”),因此数组将有一个单值标题。
getValues()返回值的二维数组,因此要确定值的长度需要类似:
header[0][i].length
根据文档hideColumns(columnIndex, numColumns):隐藏从给定索引开始的一个或多个连续列。
hideColumns(columnIndex, numColumns)方法的第二个参数表示从第一个参数中指定的索引开始隐藏的列数。
在这种情况下,会生成错误,因为它从某个索引开始并尝试隐藏大部分可用列,例如,hoja.getMaxColumns()
返回 20 并尝试执行:
hoja.hideColumns(k, hoja.getMaxColumns());
从索引 2(k 的值)开始,隐藏接下来的 20 列,这实际上超出了界限。
也许这样的代码会有所帮助:
/* CODE FOR DEMONSTRATION PURPOSES */
function hideEmptyHeaders() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var headers = ss.getRange(1, 1, 1, ss.getMaxColumns()).getValues()[0];
var columnIndex = 0, numColumns = 0;
headers.forEach(function(header, index) {
if (!header) {
if (!columnIndex)
columnIndex = index + 1;
numColumns++;
} else if (columnIndex > 0) {
ss.hideColumns(columnIndex, numColumns);
columnIndex = numColumns = 0;
}
});
if (columnIndex > 0) ss.hideColumns(columnIndex, numColumns);
}