【问题标题】:Automatically hide rows based on other cell value根据其他单元格值自动隐藏行
【发布时间】:2021-05-15 13:53:19
【问题描述】:

我们有一个电子表格,它会根据在 T 列的单元格中输入的信息自动为每一行分配状态。状态显示在 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 上的“statuts”值,并且此代码不起作用,因为从技术上讲 @987654322 @bit 告诉脚本查看当前正在编辑的单元格(在这种情况下,它将是列 T 上的单元格,因为这是在触发电子表格更改状态关闭之前要填充的最后一个字段。)

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

【问题讨论】:

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


    【解决方案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);
        }
      };
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多