google-apps-script - Google Sheet 将行复制到新工作表 IF 公式触发器

标签 google-apps-script google-sheets formula

当 B 列显示“开始”时,我尝试使用相当标准的从一张工作表复制行到另一张工作表的代码,但 B 列中有以下公式:

=IF(A2 = "Complete","Start","Not Yet")

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

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

最佳答案

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

moveTo就像您将每个单元格单独剪切粘贴到新操作中一样。这导致对其原始单元格的引用“保持”。

如果不需要,也许您应该切换到 copyTo 。这可能会对您的配方产生其他副作用。但对于你所举的这个简单的例子来说应该可以很好地工作。

s.getRange(row, 1, 1, numColumns).copyTo(target); //try copyTo here

关于google-apps-script - Google Sheet 将行复制到新工作表 IF 公式触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858414/

相关文章:

google-apps-script - 在 Google 文档中缩进段落 - Google Apps 脚本

javascript - Google Apps 脚本中的 RegExMatch 等效项是什么?

google-apps-script - 如何保护谷歌电子表格中的按钮

excel - 仅当其他相应单元格包含数字时,SUMIF 才对单元格求和

r - 没有左参数的公式在 R 中意味着什么,例如〜x?

google-apps-script - Apps 脚本电子邮件 : HTML String not evaluating in Template Body

javascript - 使用 Javascript 解析 XML(在 Google Scripts 中)

google-apps-script - 在下拉列表更改时运行 Google Apps 脚本

google-apps-script - 当单元格更改文本时更改行颜色的脚本

java - 从移动物体的速度 x,y 获取旋转角度?