根据单元格值自动将行复制到另一张工作表

我对脚本还很陌生,因此对于解释问题可能造成的错误我深表歉意。我正在处理一个电子表格,当电子表格满足特定条件(或列中的特定值)时,它将复制一行到另一个工作表;第二个功能是,在满足特定条件时将行移动到另一个工作表。

使用相关的问题/答案,我能够编写一个脚本,该脚本将在满足第4列中的“出站”条件时删除一行,请参见下面的myFunction1。对于myFunction2,我尝试在满足第15列中的条件“ M”时仅将行复制到另一张表,但是当我在第15列中输入该值时,它将复制错误的行信息。

希望这很有道理!下面的代码:

function onEdit(event) {
  myFunction1(event);
  myFunction2(event);
}
function myFunction1(event){
  var ss = Spreadsheetapp.getactiveSpreadsheet();
  var s = event.source.getactiveSheet();
  var r = event.source.getactiveRange();

  if(s.getName() == "Trailers in Yard" && r.getcolumn() == 4 && r.getvalue() == "Outbound") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Outbound");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1,1);
    s.getRange(row,1,numColumns).moveTo(target);
    s.deleteRow(row);
  }
}
function myFunction2(event){
  var ss = Spreadsheetapp.getactiveSpreadsheet();
  var s = event.source.getactiveSheet();
  var r = event.source.getactiveRange();

  if(s.getName() == "Trailers in Yard" && r.getcolumn() == 15 && r.getvalue() == "M") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Moves");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1,numColumns).copyTo(target);  
  }
}

感谢协助!

lisa7262 回答:根据单元格值自动将行复制到另一张工作表

尝试一下:

function onEdit(e) {
  //myFunction1(e);
  myFunction2(e);
}
function myFunction2(e){
  //e.source.toast('Flag1');
  var sh=e.range.getSheet();
  if(sh.getName()=="Sheet2" && e.range.columnStart==15 && e.range.getValue()=="M") {
    //e.source.toast('Flag2');
    var targetSheet=e.source.getSheetByName("Sheet1");
    var target=targetSheet.getRange(targetSheet.getLastRow()+1,1);
    sh.getRange(e.range.rowStart,1,sh.getLastColumn()).copyTo(target);
  }
}

您必须更改工作表名称。

本文链接:https://www.f2er.com/3141474.html

大家都在问