繁体   English   中英

将一系列单元格从一行移动到另一个谷歌工作表并删除它

[英]Move a range of cells from a row to another google sheet and delete it

我得到了以下代码,但不是我想要的。

function onEdit(event) {
 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if(s.getName() == "Listed" && r.getColumn() == 21 && r.getValue() == "yes") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Sold");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

我有 2 张纸,一张用于列出的物品,一张用于出售的物品。 当第 21 列说“是”时,我需要删除“已上市”中的一行并将其粘贴到我的“已售”表中。

有没有办法只复制和粘贴从“已上市”到“已售”的单元格范围,但要删除整行?

解释:

  • 您的目标是仅复制编辑行的一个子集并将其粘贴到目标工作表中,然后在源工作表中删除该行。
  • 以下脚本将仅复制该行的前 10 列。 根据您的需要调整const numColumns = 10

解决方案:

function onEdit(e) {
 
  const ss = e.source;
  const s = e.source.getActiveSheet();
  const row = e.range.getRow();
  const col = e.range.getColumn();
  const targetSheet = ss.getSheetByName("Sold");
  const numColumns = 10;

  if(s.getName() == "Listed" && col == 21 && e.range.getValue() == "yes") {
    
    const s_range = s.getRange(row,1,1,numColumns);
    const s_values = s_range.getValues();
    s.deleteRow(row);
    targetSheet.getRange(targetSheet.getLastRow() + 1, 1,s_values.length,s_values[0].length).setValues(s_values);
   
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM