遍历范围以显示/隐藏行

时间:2017-10-13 16:19:21

标签: javascript google-apps-script google-sheets

老VBA狗试图学习新的JS技巧。

当单元格值="显示"

时,我需要修改下面的代码以返回行号
function myFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet(); //active workbook
    var sheet = SpreadsheetApp.getActiveSheet(); //active sheet
    var range = sheet.getRange("ShowHideRows")
    range.getValues().forEach(function(row) {
        row.forEach(function(cell) {
            if (cell == "Show") {
                  sheet.showRows(cell)
            }
        });
    });
} 

2 个答案:

答案 0 :(得分:1)

你应该这样做:

function MyFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet(); //active workbook
    var sheet = SpreadsheetApp.getActiveSheet(); //active sheet
    var range = sheet.getRange("ShowHideRows")

    range.getValues().forEach(function(row, rowIndex) {
        row.forEach(function(cell) {
            if (cell == "Show") {
                sheet.showRows(cell);
                return rowIndex;
            }
        });
   });
}

您可以传递.forEach方法的值和索引。

答案 1 :(得分:0)

谢谢鲁本,你的建议奏效了。代码的目的是便于过滤表行的显示。在这种情况下,有一个列,其范围名称为“ShowHideRows”,并且与表相邻。代码将遍历'ShowHideRows'中的每一行,如果cell =“Hide”则隐藏该行。这是工作代码。

function hideRows() {
    var ss = SpreadsheetApp.getActiveSpreadsheet(); //active workbook
    var sheet = SpreadsheetApp.getActiveSheet(); //active sheet
    var range = sheet.getRange("ShowHideRows");
    var firstRow = range.getRow();

    range.getValues().forEach(function(row, rowIndex) {
        row.forEach(function(cell) {
            if (cell == "Hide") {
                sheet.hideRows(rowIndex + firstRow);
            }
        })
    })
}

enter image description here