перемещение строк и снимите флажок - PullRequest
0 голосов
/ 03 мая 2019

Я хочу переместить ряд строк, в которых работает часть скрипта, после того, как скрипт завершится, я хочу снять флажки, пока я не достиг этого, но не получаю ошибку, ничего не происходит.

function moveRows() {
var ss, s, t, arr, del, ts, v;
    ss = SpreadsheetApp.getActive();
    s = ss.getSheetByName('sheetname');
    ts = 
SpreadsheetApp.openById("worksheet id"); 
    t = ts.getSheetByName('sheetname');  
    arr = [];
    v = s.getDataRange().getValues();
   for(var i = v.length-1; i >=0; i--) {
   if (v[i] && v[i][21] == 'yes') { 
        arr.unshift(v[i]);
        v[i][21] = 'NO'

        }
   }
if(arr.length > 0 ) t.getRange(t.getLastRow() + 1, 1, arr.length, arr[0].length).setValues(arr)
 }

1 Ответ

0 голосов
/ 03 мая 2019

Попробуйте:

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 
}

Перед запуском функции:

enter image description here

После запуска функции:

enter image description here

Целевая электронная таблица:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...