我们有一个电子表格,它根据在 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 上的值而不是活动单元格。
答案 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);
}
};
}