Скрипт GoogleSheet для перемещения на лист с тем же именем, что и значение ячейки - PullRequest
1 голос
/ 20 января 2020

У меня есть лист с 6 столбцами. Строка 1 - это заголовки, и каждый лист имеет одинаковые заголовки и столбцы.

Sheet Sample Photo

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

function copyrange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Source');
  var testrange = sheet.getRange('F:F');
  var testvalue = (testrange.getValues());
  var csh = ss.getSheetByName('target');
  var data = [];
  var j =[];

for (i=0; i<testvalue.length;i++) {
  if ( testvalue[i] == 'Completed') {
  data.push.apply(data,sheet.getRange(i+1,1,1,25).getValues());
  //Copy matched ROW numbers to j
  j.push(i);
 }
 }


 csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);


  for (i=0;i<j.length;i++){
  var k = j[i]+1;
  sheet.deleteRow(k);


  if (!(i == j.length-1)) {
  j[i+1] = j[i+1]-i-1;
}
}

Любой Помощь будет принята с благодарностью

1 Ответ

2 голосов
/ 20 января 2020

Удаление строк при сборе данных, соответствующих критериям

function moveRows() {
  var ss=SpreadsheetApp.getActive();
  var sheet=ss.getSheetByName('Source');
  var vA=sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn()).getValues();
  var csh=ss.getSheetByName('target');
  var d=0;//deleted row counter
  var data=[];
  for(var i=0;i<vA.length;i++) {
    if (vA[i][5]=='Completed') {
      data.push(vA[i]);
      sheet.deleteRow(i+1-d++);//increment deleted row counter as you delete rows
    }
  }
  csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}

Лист getLastRow ()

Лист getLastColumn

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