【问题标题】:Google Sheet Copy Row to New Sheet IF Formula TriggerGoogle表格复制行到新表格IF公式触发器
【发布时间】:2018-10-17 15:22:48
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果不希望这样,也许你应该切换到copyTo。这可能会对您的公式产生其他副作用。但是对于您举例说明的这个简单的例子来说应该可以正常工作。

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

    【讨论】:

      猜你喜欢
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2020-05-24
      • 2021-09-28
      • 1970-01-01
      • 2020-07-24
      相关资源
      最近更新 更多