获取忽略 google 脚本中的公式的最后一行

Get last row ignoring formula in google script

我使用 google 脚本将行从一个 sheet 移动到另一个,从 A 列到 D 列。在 E 列上我有一个公式。我如何将数据放在示例中从 A 列到 D 列的最后一行,忽略 E 列中的公式。有人可以帮我解决这个问题吗?

function onEdit(e){
  let r = e.range;
  if (r.columnStart != 4 || r.rowStart == 1 || e.value == null) return;
  const sh = SpreadsheetApp.getActive();
  const valArray = ["Waiting","In progress","Complete"];
  const destArray = ["Order","Open order","Complete order"];
  let dest = sh.getSheetByName(destArray[valArray.indexOf(e.value)]);
  let src = sh.getActiveSheet();
  if (dest.getName() == src.getName()) return;
  src.getRange(r.rowStart,1,1,4).moveTo(dest.getRange(dest.getLastRow()+1,1,1,4));
  src.deleteRow(r.rowStart);
}

这是我的问题的一个例子,也许这会更好地解释:https://docs.google.com/spreadsheets/d/1qowADCPYiyej25ezXtjVLO5fvg9Gr9rolX3bh2-ZAG4/edit#gid=0

dest.getLastRow()替换为dest.getLastDataRow('A')并添加此功能:

Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastRow();
  var range = this.getRange(col + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};

我还是建议你把 E 列的所有公式都删掉,填入 E1

={"price * 2";ARRAYFORMULA(if(C2:C>0;C2:C*2;""))}

这样公式将填充/将激活新行