Home > Enterprise >  How to only move values rather than formulas in my Google Script
How to only move values rather than formulas in my Google Script

Time:01-29

function onEdit(event) {
  // assumes source data in sheet named Backorder LIST
  // target sheet of move to named Completed
  // getColumn with check-boxes is currently set to column 1 or A
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Backorder LIST" && r.getColumn() == 1 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow()   1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  } 
}

I am having trouble finding a way to move only the values to COMPLETED sheet. Anytime I change .moveTo(target); to .copyTo(target, {contentsOnly: true}); the script fails. Any suggestions would be appreciated. Thank you!

CodePudding user response:

Move values only

function onEdit(e) { 
  var sh = e.range.getSheet();
  if(sh.getName() == "Backorder LIST" && e.range.columnStart == 1 && e.value == "TRUE") {
    var tsh = e.source.getSheetByName("Completed");
    let vs = sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).getDisplayValues();
    tsh.getRange(tsh.getLastRow()   1, 1, vs.length, vs[0].length).setValues(vs);
    sh.deleteRow(e.range.rowStart);
  } 
}
  •  Tags:  
  • Related