根据其他单元格值自动隐藏行

时间:2021-05-15 13:53:19

标签: google-chrome google-apps-script google-sheets excel-formula google-sheets-formula

我们有一个电子表格,它根据在 T 列的单元格中输入的信息自动为每一行分配状态。stauts 出现在 M 列上,显示打开、挂起和关闭。我正在使用以下代码:

// Sheet the data is on.
var SHEET = "DLT";
// The value that will cause the row to hide. 
var VALUE = "Closed"
// The column we will be using 
var COLUMN_NUMBER = 14

function onEdit (e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();
  
  //Ensure on correct sheet.
  if(SHEET == activeSheet.getName()){
    var cell = ss.getActiveCell()
    var cellValue = cell.getValue();
    
    //Ensure we are looking at the correct column.
    if(cell.getColumn() == COLUMN_NUMBER){
      //If the cell matched the value we require,hide the row. 
      if(cellValue == VALUE){
        activeSheet.hideRow(cell);
      };
    };
  };
}

我知道代码有错误,因为只要在 T 列上输入信息,电子表格就会自动更改 M 列上的“stauts”值,而此代码将不起作用,因为从技术上讲,{{ 1}} 位告诉脚本查看正在编辑的当前单元格(在这种情况下将是 T 列上的单元格,因为这是触发电子表格更改状态为关闭之前要填充的最后一个字段。)

疑问是,如何让脚本仍然查看正在编辑的当前行,但考虑列 M 上的值而不是活动单元格。

1 个答案:

答案 0 :(得分:1)

function onEdit (e) {
  var sh = e.range.getSheet();
  //column 20 is T
  if(sh.getName()== 'DLT' && e.range.columnStart == 20 ){
    SpreadsheetApp.flush();//This will provide enough time to allow the spreadsheet to complete all of it's calculations.
    //column 13 is M
    if(e.range.offset(0,-7).getValue()=="Closed") {
      sh.hideRows(e.range.rowStart);
    }
  };
}
相关问题