'Move row to a different sheet when box is checked

Hi I'm very new to coding with Google Sheets and Excel. My goal is to move a row when it is checked off.

The original sheet is called "School Assignments" and the sheet I want to move it to is called "Finished". When a box in column H (column 8) is checked the data value of the row becomes "Done". When it is not marked it is "Unfinished".

I want the row to move to the Finished sheet when I mark it as "Done". I also want this to work vice versa where when I uncheck and it becomes "Unfinished" it it goes back to the School Assignments sheet. I have some code but honestly it was done months ago (I'm coming back to this project after a break) and I'm not sure what I was thinking when I wrote it or if it is correct at all. It doesn't work obviously.

  if(sh.getName() == "School Assignments" && e.range.columnStart == 8 && e.value == "Done") {
    let tsh = e.source.getSheetByName("Finished");
    sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).moveTo(tsh.getRange(tsh.getLastRow() + 1, 1));
    sh.deleteRow(e.range.rowStart);
  } else if(sh.getName() == "Finished" && e.range.columnStart == 8 && e.value == "Unfinished") {
    let tsh = e.source.getSheetByName("School Assignments");
    let trg = tsh.getRange(tsh.getLastRow() + 1, 1);
    sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).moveTo(trg);
    sh.deleteRow(e.range.rowStart);
  }
}

I also have an auto-sorting piece earlier in the code which defines some constants.

    const ss = SpreadsheetApp.getActiveSpreadsheet()
    const ws = ss.getSheetByName("School Assignments")
    const range = ws.getRange(2,1,ws.getLastRow()-1,8)
  
    


    range.sort({column: 7, ascending: true })
  } 

I am totally unsure how to fix this and accomplish what I'm looking to do.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source