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



我使用了一个谷歌脚本,将行从一张表移动到另一张表,从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.getLastDataRow('A')替换dest.getLastRow()并添加此函数:

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

使得公式将填充/将激活新行

相关内容

  • 没有找到相关文章

最新更新