Google工作表将行复制到新工作表IF公式触发器

时间:2018-10-17 15:22:48

标签: google-apps-script google-sheets formula

当B列显示“开始”时,我试图使用从一张纸到另一张纸代码的标准复制行,但B列中包含以下公式:

  

= IF(A2 =“完成”,“开始”,“尚未”)

并且此代码似乎无法识别从“尚未”更改为“开始”的公式。任何帮助将不胜感激。谢谢!

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();

  if(s.getName() == "Temp" && r.getColumn() == 1 && r.getValue() == "Complete") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Start");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

1 个答案:

答案 0 :(得分:2)

问题不在于它没有“识别”公式更改值。如果在复制公式后再次查看它,您会注意到引用从A2变为Temp!A2

moveTo的工作方式就像您将每个单元格分别剪切n粘贴到其新操作中一样。这样就可以保留对原始单元格的引用。

如果不希望这样做,也许您应该切换到copyTo。这可能会对您的公式产生其他副作用。但是应该适合您举例说明的简单示例。

s.getRange(row, 1, 1, numColumns).copyTo(target); //try copyTo here
相关问题