【问题标题】:Automatically Copy Rows to Another Sheet Based on Cell Value根据单元格值自动将行复制到另一个工作表
【发布时间】:2019-11-12 04:53:08
【问题描述】:

我对脚本很陌生,因此对于我在解释我的问题时可能出现的错误,我深表歉意。我正在研究一个电子表格,当它满足某个条件(或列中的某个值)时,它将一行复制到另一个工作表,第二个函数将在满足某个条件时将该行移动到另一个工作表。

使用相关问题/答案,我能够编写一个脚本,在满足第 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, 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, 1);
    s.getRange(row, 1, 1, numColumns).copyTo(target);  
  }
}

感谢您的帮助!

【问题讨论】:

  • 欢迎来到 StackOverflow。 “它复制了错误的行信息。”它会 复制哪些信息?请分享您的电子表格副本(不包括私人或机密信息)。

标签: google-apps-script google-sheets


【解决方案1】:

试试这个方法:

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,1,sh.getLastColumn()).copyTo(target);
  }
}

您必须更改工作表名称。

【讨论】:

  • 谢谢,这有点道理。尽管如果我将脚本编辑为只执行第二个功能,它仍然不会复制正确的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多