当“状态”从 OPEN 更改为 COMPLETED 时,如何将一行移动到 sheet (GOOGLE SHEET) 的底部

How to move a row to bottom of sheet (GOOGLE SHEET) when “Status” is changed to a COMPLETED from OPEN

当“状态”更改为完整时,如何将一行移动到同一行的底部sheet。

我想弄清楚如何在状态 B 列值从打开更改为关闭后将一行移到底部。

Sheet name is: Sheet1, 状态下拉菜单在Column B, 下拉菜单包含: OPEN, HOLD, PENDING, CLOSED

状态变为CLOSED时需要触发器

我找到了这段代码,但它不起作用:

function onEdit(e) {

  const row = e.range.getRow();
  const col = e.range.getColumn();
  const as = e.source.getActiveSheet();
  if(as.getName() == "Sheet1" && col == 2  && row > 1 && !as.getRange(row,col).getValue()=='') {  
    const row_new = as.getRange(row,1,1,col);
    row_new.copyTo(as.getRange(as.getLastRow()+1,1,1,col));
    as.deleteRow(row);
  }
} 



如果我没理解错的话,如果在 B 列中选择了 CLOSED 状态,您想移动整行。 但是,IF 函数中没有检查 CLOSED 状态。 另外,不是复制整行,而是只复制2个单元格:

const row_new = as.getRange(row, 1, 1, col)

如果你像这样更改代码,那么一切正常:

更新

您在评论中添加了关于 HOLD 的附加条件。 这也是处理这种情况的更新代码:

function onEdit(e) {
  const row = e.range.getRow();
  const col = e.range.getColumn();
  const as = e.source.getActiveSheet();
  const lc = as.getLastColumn();
  if(as.getName() == "Sheet" && col == 2  && row > 1 && as.getRange(row,col).getValue() == 'CLOSED') {
    const row_new = as.getRange(row, 1, 1, lc);
    row_new.copyTo(as.getRange(as.getLastRow() + 1, 1, 1, lc));
    as.deleteRow(row);
  } else if(as.getName() == "Sheet" && col == 2  && row > 1 && as.getRange(row,col).getValue() == 'HOLD'){
    as.insertRowAfter(1);
    const row_new = as.getRange(row + 1, 1, 1, lc);
    row_new.copyTo(as.getRange(2, 1, 1, lc));
    as.deleteRow(row + 1);
  }
}