首页 > 解决方案 > 将一系列单元格从一行移动到另一个谷歌工作表并将其删除

问题描述

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

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 列说“是”时,我需要删除“列出”中的一行并将其粘贴到我的“已售”表中。

有没有办法只复制和粘贴从“列出”到“已售”的一系列单元格但删除整行?

标签: google-apps-scriptgoogle-sheets

解决方案


解释:

  • 您的目标是仅复制编辑行的子集并将其粘贴到目标工作表,然后在源工作表中删除该行。
  • 以下脚本将仅复制该行的前 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);
   
  }
}

推荐阅读