当“状态”从“打开”更改为“完成”时,如何将行移动到工作表(Google Sheet)的底部 [英] How to move a row to bottom of sheet (GOOGLE SHEET) when “Status” is changed to a COMPLETED from OPEN

查看:8
本文介绍了当“状态”从“打开”更改为“完成”时,如何将行移动到工作表(Google Sheet)的底部的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在"状态"更改为"完成"时将行移动到同一工作表的底部。

我正在尝试在Status B列值从OPEN更改为CLOSED后如何将行移动到底部。

工作表名称为:Sheet1,Colume,其中状态下拉菜单位于B列,下拉菜单包含:打开、挂起、挂起、关闭

状态更改为已关闭时需要触发器

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

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列中选择已关闭状态的情况下移动整行。 但是,在IF函数中不检查关闭状态。 此外,不是复制整行,而是仅复制两个单元格:

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

如果您像这样更改代码,则一切工作正常:

更新

您在评论中添加了一个有关保留的附加条件。 下面是处理这种情况的更新代码:

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);
  }
}

这篇关于当“状态”从“打开”更改为“完成”时,如何将行移动到工作表(Google Sheet)的底部的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆