Мне намного проще понять циклы, если мы можем увеличить наш путь через диапазон, и, очевидно, это не имеет значения для вашей ситуации, поэтому давайте попробуем.
function moveRows() {
var sss=SpreadsheetApp.getActive();
var tss=SpreadsheetApp.openById("SpreadsheetId");
var ssh=sss.getSheetByName('Sheet1');
var srg=ssh.getRange(2,22,ssh.getLastRow()-1,1);//just column 22
var srg1=ssh.getRange(2,1,ssh.getLastRow()-1,ssh.getLastColumn());//all columns for sending data to other spreadsheet. This wont send formulas
var svA1=srg1.getValues();
var svA=srg.getValues();
var tsh=tss.getSheetByName('Sheet1');
var oA=[];//output array for rows that meet criteria
for(var i=0;i<svA.length; i++) {
if (svA[i][0]==true) { //column 22
oA.push(svA1[i].slice());
svA[i][0]=false;//uncheck checkbox
}
}
tsh.getRange(tsh.getLastRow()+1,1,oA.length,oA[0].length).setValues(oA);//load target sheet with rows with check boxes checked
srg.setValues(svA);//save values in source sheet
}
Так что теперь, какой точный диапазон?что вы хотите зациклить?Какие строки?Какие столбцы?И в каком столбце есть флажки?
И теперь я вижу, что, возможно, другая проблема заключается в том, что у вас есть формулы, которые вы хотите сохранить, чтобы при сбросе флажков мы сбрасывали только этот один столбец.
В этой версии я выполняю только setValues () в столбце, где у меня есть флажки, и я все еще получаю данные на другой лист, так как я использую два массива, один из которых содержит все данные, а другой - простофлажок столбца.Так что это должно решить ваши проблемы с формулами.