首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于单元格选择移动行

基于单元格选择移动行
EN

Stack Overflow用户
提问于 2021-04-22 07:00:26
回答 2查看 56关注 0票数 0

我有一个脚本,移动整个行到一个不同的标签,并删除它从标签,它是基于“列表”的选择移动。

脚本如下:

代码语言:javascript
运行
复制
    // Script Move & Delete
function onEdit(event) {
  // assumes source data in sheet named Needed
  // target sheet of move to named Acquired
  // test column with yes/no is col 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  // In Review Trigger
  if(s.getName() == "Applied" && r.getColumn() == 1 && r.getValue() == "In Review") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("In Review");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
  // In Review Trigger
  else if(s.getName() == "Applied" && r.getColumn() == 1 && r.getValue() == "Failed") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Failed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }

因此,例如,如果选项卡“已应用”上的行和列1上的单元格的值=在审阅中,则该行将移动到选项卡“在审阅中”,但如果列1上的单元格的值=失败,则行将移动到选项卡失败。

这部分工作起来很有魅力,我知道有多个选项卡会有很多其他的,我不是一个开发人员,所以我想知道,如果状态(第1列)更改为已应用被移动到选项卡1,或者如果值更改为失败,我该如何移动行?

基本上,根据每行/制表符中的一列的值在选项卡之间移动行。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2021-04-22 07:24:10

这对我很有效:

代码语言:javascript
运行
复制
function onMyEdit(e) {
  //e.source.toast('entry');
  const s = e.range.getSheet();
  if (s.getName() == "Sheet1" && e.range.columnStart == 1 && e.value) {
    //e.source.toast('cond')
    const names = ['Sheet2', 'Sheet3'];
    let idx = names.indexOf(e.value);
    if (~idx) {
      //e.source.toast('sheet');
      let tsh = e.source.getSheetByName(names[idx]);
      let tgt = tsh.getRange(tsh.getLastRow() + 1, 1);
      s.getRange(e.range.rowStart, 1, 1, s.getLastColumn()).moveTo(tgt);
      s.deleteRow(e.range.rowStart);
    }
  }
}

我对名称进行了一些更改,以便于调试,因此请仔细查看它,以确保所有的工作表名称都符合您的需要。

票数 1
EN

Stack Overflow用户

发布于 2021-04-22 14:46:38

如果在移动行时需要更复杂的功能,请看一下moveRowsFromSpreadsheetToSpreadsheet_脚本。不幸的是,在这里直接引用太长了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67204527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档