【发布时间】:2013-05-29 16:32:07
【问题描述】:
我正在尝试为 Google 电子表格编写一个函数,用于定位组的第一列和最后一列。然后它会隐藏该组,或者如果它已经隐藏则显示它。
但是,我还没有找到一种方法来确定一列是否隐藏。我在 Google 的 Class Sheet 页面 https://developers.google.com/apps-script/reference/spreadsheet/sheet 上找不到任何东西,也没有找到与 Excel 的 .hidden 等效的东西
getColumnWidth(column) 返回未隐藏的列宽,即使它被隐藏。
这是我的代码:
function hideShowColumns(startCol, endCol) {
//endCol is one column past the last data set that should be hidden
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Transposed Data");
//import the data from the Column Headers
var colHeaderData = sheet.getRange(1, 1, 2, sheet.getMaxColumns()).getValues();
var startColNum = 0;
var endColNum = 0;
// This section searches for the column names in the header rows and returns their column number
for (var i =0; i < 2; ++i) {
for (var j = 0; j < colHeaderData[0].length; ++j) {
if (colHeaderData[i][j] == startCol)
startColNum = j;
if (colHeaderData[i][j] == endCol)
endColNum = j;
}
}
//This is the wrong command getColumnWidth doesn't change if column is hidden
if (sheet.getColumnWidth(startColNum + 1) != 0) {
sheet.hideColumns(startColNum + 2, endColNum - startColNum - 1);
Logger.log(sheet.getColumnWidth(startColNum + 2));
return;
}
//This is the wrong command getColumnWidth doesn't change if column is hidden
if (sheet.getColumnWidth(startColNum + 1) == 0) {
for (var j = startColNum + 1; j < endColNum - 1; ++j) {
sheet.unhideColumn(j);
Logger.log(sheet.getColumnWidth(startColNum + 2));
}
return;
}
}
感谢您的帮助!
【问题讨论】:
-
我很确定您问的是与 Google Apps 脚本开发环境有关的问题 - 如果是这种情况,我可能会将
javascript标记更改为google-apps-script。 -
谢谢,我已将字段更新为
google-apps-script,并在您的链接上为该问题加了星标,希望有一天能解决这个问题。 -
我的解决方法是将
*附加到我要隐藏的列的列标题中。然后我可以使用脚本检查*,并隐藏或显示这些列。 -
@SamWatkins 愿意为此分享您的脚本吗?
-
@Vijay : for(var i=0;i
"){ sheet[i].hideColumns(4); sheet[i].getRange(1, 4).setValue(""); } else{ sheet[i].unhideColumn(sheets[i].getRange(1, 4, sheet[i].getMaxRows(), 1)); sheet[i].getRange(1, 4).setValue(""); } }
标签: google-apps-script google-sheets