Перемещение строк в массе зависит от значения в одном столбце - PullRequest
0 голосов
/ 15 марта 2019

У меня есть настройка скрипта, которая перемещает все записи на листе на другой лист.Однако я хотел бы добавить функциональность для перемещения только тех записей, которые имеют значение «Одобрено» в определенном столбце (столбец I для моей текущей ситуации).Я видел несколько других вопросов / ответов для перемещения отдельных строк на основе значений, но я не понял, как использовать эти сценарии для работы с полной электронной таблицей.Я думаю, я могу использовать цикл for, но как?

Текущий скрипт:

 function MoveRecords(){

  //Original Sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Example Input")

  //Calculate # of Rows Ignoring Blank Array Values
  var Rows = ss.getRange("A2:A").getValues();
  var NumRows = Rows.filter(String).length;

/*Add a For Loop here to only get the rows with Approved in Column I?*/

  //Parsed Data to Move
  var rangeValues1 = sheet.getRange(2,1,NumRows,1).getValue();
  var rangeValues2 = sheet.getRange(2,2,NumRows,5).getValues();

  //Destination of Parsed Data 
  var DestinationSS = SpreadsheetApp.openById('ID');
  var DestinationSheet = DestinationSS.getSheetByName('Approved');  
  var DestinationLastRow = DestinationSheet.getLastRow()+1;

  //Move the Data
  DestinationSheet.getRange(DestinationLastRow,3,NumRows,1).setValue(rangeValues1);
  DestinationSheet.getRange(DestinationLastRow,5,NumRows,5).setValues(rangeValues2);

  };

Любая помощь очень ценится!

1 Ответ

1 голос
/ 15 марта 2019

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

function MoveRecords() {
  //Original Sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Example Input');
  var values = sheet.getDataRange().getValues();

  /*Add a For Loop here to only get the rows with Approved in Column I?*/
  // col I = index 8
  var res = values.filter(function(row) {
    return row[8] == 'Approved';
  });

  //Parse Data to Move
  var rangeValues1 = res.map(function(row) {
    return [row[0]];
  });
  var rangeValues2 = res.map(function(row) {
    row.shift();
    while (row.length > 5) row.pop();
    return row;
  });

  //Destination
  var DestinationSS = SpreadsheetApp.openById('ID');
  var DestinationSheet = DestinationSS.getSheetByName('Approved');
  var DestinationLastRow = DestinationSheet.getLastRow() + 1;

  //Move the Data
  DestinationSheet.getRange(DestinationLastRow, 3, rangeValues1.length, 1).setValues(rangeValues1);
  DestinationSheet.getRange(DestinationLastRow, 5, rangeValues2.length, 5).setValues(rangeValues2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...