Очистить содержимое на оригинальном листе после копирования / вставки - PullRequest
0 голосов
/ 08 марта 2020

У меня есть этот скрипт для копирования и вставки строк из исходного листа в архивный лист, для которых было подтверждено, что они были обработаны - что работает отлично! Но я также хочу очистить содержимое оригинального листа, чтобы он не копировал повторяющиеся строки. Я новичок в написании сценария и буду признателен за все предложения!

   function moveValuesOnly(){
     var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Time Off Action Items");
     var range = ss.getRange("A3:K");
     var values = range.getValues();
     var target = new Array();
      for(i = 0; i<values.length; i++){
      if (values[i][9] == "Confirm"){
      target.push(values[i])
     }
     }

   var sDest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
   sDest.getRange(sDest.getLastRow()+1,1,target.length,target[0].length).setValues(target);
  }

1 Ответ

3 голосов
/ 09 марта 2020

Я сделал аналогичный лист для рабочего проекта, и решение, которое я нашел, состояло в том, чтобы сохранить значения строк, когда я скопировал их в новый массив, а затем удалил строки снизу вверх, используя a для l oop. Для вашего примера попробуйте это:

function moveValuesOnly(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Time Off Action Items");
  var range = ss.getRange("A3:K");
  var values = range.getValues();
  var target = new Array();
  // Create new array to log copied rows
  var copiedRows = new Array();
  for(i = 0; i<values.length; i++){
    if (values[i][9] == "Confirm"){
      target.push(values[i]);
      // Add row value into copied rows array
      copiedRows.push(i);
    }
  }
  var sDest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
  sDest.getRange(sDest.getLastRow()+1,1,target.length,target[0].length).setValues(target);
  // Go back through and delete rows from the bottom up
  var totalCopied = copiedRows.length;
  for (s = totalCopied; s>0; s--) {
  ss.deleteRow(copiedRows[s-1]+3);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...