Попробуйте:
function moveRows() {
var sss=SpreadsheetApp.getActive();
var tss=SpreadsheetApp.openById("Target Spreadsheet Id");
var ssh=sss.getSheetByName('Source Sheet Name');
var srg=ssh.getDataRange();
var svA=srg.getValues();
var tsh=tss.getSheetByName('Target Sheet Name');
for(var i=svA.length-1;i>0; i--) {
if (svA[i][21]==true) { //column 22 Indices are 1 less that columns
svA[i][21]=false;
}
}
tsh.getRange(tsh.getLastRow()+1,1,svA.length,svA[0].length).setValues(svA);//load target sheet
srg.setValues(svA);//save values in source sheet
}
Думаю, я наконец понял, что вы хотите сделать с этим другим массивом.Я думаю, что вы хотите захватить все строки, чьи флажки были отмечены.Вот что делает функция ниже.
function moveRows() {
var sss=SpreadsheetApp.getActive();
var tss=SpreadsheetApp.openById("Target Spreadsheet Id");
var ssh=sss.getSheetByName('Source Sheet Id');
var srg=ssh.getDataRange();
var svA=srg.getValues();
var tsh=tss.getSheetByName('Target Sheet Id');
var oA=[];//output array for rows that meet criteria
for(var i=svA.length-1;i>1; i--) {
if (svA[i][21]==true) { //column 22
oA.push(svA[i].slice());//this copies the row array
svA[i][21]=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
}
Перед запуском функции:
После запуска функции:
Целевая электронная таблица: