How to stop code from moving two rows at a time when checkbox is true?

谁都会走 提交于 2020-01-17 14:05:16

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!