问题
I'm working on a spreadsheet for my boss and I've been trying to add a feature where the entire row moves from Sheet1 to Sheet2 when the checkbox in column1 is checked. The code I'm using works, except sometimes it moves two rows at once even though only one box is checked. Here's my code:
function onEdit(event) {
// assumes source data in sheet named Sheet1
// target sheet of move to named Sheet2
// test column with yes/no is col 1 or A
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Sheet1" && r.getColumn() == 1 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sheet2");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
I am NOT experienced with code at all. I got this from Joshua Doan's reply to someone else's question: Google script for move rows depending on checkbox - Google sheet
So my question is, how do I get it to stop moving two rows at once??
Thanks much!
回答1:
function onEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Sheet1')return;
if(e.range.columnStart==1 && e.value=="TRUE") {
var row1=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn());
var tsh=e.source.getSheetByName('Sheet2');
row1.moveTo(tsh.getRange(tsh.getLastRow()+1,1));
sh.deleteRow(e.range.rowStart);
}
}
来源:https://stackoverflow.com/questions/59670880/how-to-stop-code-from-moving-two-rows-at-a-time-when-checkbox-is-true