隐藏/取消隐藏基于单元格内容的行

时间:2015-03-25 16:11:16

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

我想要我的当前脚本给我一个自定义菜单,侧边栏和隐藏基于值的单元格,如果单元格更改了值,则还包括取消隐藏。

E.g。

function onOpen() {
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
        .createMenu('x Tools')
        .addItem('Instructions', 'showSidebar')
        .addItem('Change y Form', 'openform')
        .addToUi();
}

function showSidebar() {
    var html = HtmlService.createHtmlOutputFromFile('Page')
        .setSandboxMode(HtmlService.SandboxMode.IFRAME)
        .setTitle('Instructions')
        .setWidth(300);
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
        .showSidebar(html);
}

function openform() {
    showURL("https://docs.google.com/a/xxx/viewform")
}

function showURL(href) {
    var app = UiApp.createApplication().setHeight(50).setWidth(200);
    app.setTitle("Add Project to x");
    var link = app.createAnchor('Open x Form ', href).setId("link");
    app.add(link);
    var doc = SpreadsheetApp.getActive();
    doc.show(app);
}

function onEdit(e) {
    Logger.log('e.value: ' + e.value);
    var cellEdited = e.range.getA1Notation();
    Logger.log('cellEdited: ' + cellEdited);
    if (cellEdited === "C12" && e.value === "X") {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var theSheet = ss.getActiveSheet();
        theSheet.hideRows(13, 4);
    };
}

我的问题是我尝试添加第二个if语句 - 没有得到错误但只是没有取消隐藏。尝试使用别人并得到错误。基本思路是,如果单元格c12是X,则应隐藏行13,14,15,16,如果它是其他任何单元格应该是可见的。我现在拥有的隐藏功能如果你将X更改为其他东西,它不会取消隐藏单元格。

2 个答案:

答案 0 :(得分:0)

为此,您只需编写代码即可取消隐藏行。

以这种方式在else块中尝试:

else if (cellEdited === "C12" && e.value !== "X") {

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var theSheet = ss.getActiveSheet();

    theSheet.showRows(13, 4);
     }

希望有所帮助!

答案 1 :(得分:0)

您只需要以同样的方式取消隐藏,只需将表达式更改为!==" X",然后使用.showRows方法。

if (cellEdited === "C12" && e.value !== "X") {

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var theSheet = ss.getActiveSheet();

    theSheet.showRows(13, 4);
}