Dan*_*ano 6 google-sheets google-apps-script
我正在尝试为Google Spreadsheet编写一个函数,用于查找组的第一列和最后一列.然后隐藏该组,或者如果它已经隐藏则显示该组.
但是,我无法找到确定列是否隐藏的方法.我在Google的"课程表"页面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;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
小智 9
新的(截至 2018 年)api 是: isColumnHiddenByUser(columnPosition)
返回给定的列是否被用户隐藏。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// Columns start at 1
Logger.log(sheet.isColumnHiddenByUser(1));
Run Code Online (Sandbox Code Playgroud)
遗憾的是,没有Google Apps脚本方法会返回是否隐藏列或行.作为一种方式,你可能想为它打开的问题加注星标.接收有关该问题的更新,以及b."签署请愿书",可以这么说.