如何合并脚本,以便一个停止撤消另一个

时间:2018-07-11 09:49:39

标签: google-apps-script google-sheets

我已经在下面编写了脚本,以隐藏所有选中了特定框的行,或者隐藏其他单元格中包含“较新”一词的行。我遇到的问题是,当我运行hideReviewed_函数时,它将撤消第二个函数hideNewer_完成的隐藏行。如何混合这2个以便可以运行1个功能,它既看起来又同时隐藏两个复选框和表示“较新”的项目?

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActive();
  var menuItems = [
    {name: 'Reviewed', functionName: 'hideReviewed_'},
    {name: 'Newer', functionName: 'hideNewer_'}
  ];
  spreadsheet.addMenu('Hiding Time', menuItems);
}

function hideReviewed_() {
  var s = SpreadsheetApp.getActive().getSheetByName('2 Week Snapshot');
  s.showRows(1, s.getMaxRows());

  s.getRange('C:C')
    .getValues()
    .forEach( function (r, i) {
    if (r[0] == 1) 
      s.hideRows(i + 1);
    });
}

function hideNewer_(e) {
  var s = SpreadsheetApp.getActive().getSheetByName('2 Week Snapshot');
  s.showRows(1, s.getMaxRows());

  s.getRange('J:J')
    .getValues()
    .forEach( function (r, i) {
    if (r[0] == 'Newer') 
      s.hideRows(i + 1);
    });
}

1 个答案:

答案 0 :(得分:1)

您在这里:

    function hideReviewed() {
  var s = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  s.showRows(1, s.getMaxRows());
  s.getRange('C:J').getValues().forEach(function (r, i) {if (r[0] == 1 || r[7] == "Newer") s.hideRows(i + 1)});
}

所做的更改:

  • 我得到了整个范围C:J
  • 在if语句中,我检查r [0]是否等于1或r [7]是否等于“较新”。

r [0]是列C r [7]是J列

在示例电子表格中对此进行了测试,并且似乎可以正常工作。 希望这会有所帮助。

之前: enter image description here

之后: enter image description here