Google Таблицы: диапазон повторной сортировки после автоматического перемещения строки с помощью скрипта

#sorting #google-apps-script #google-sheets

Вопрос:

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

 function onEdit(e){

  // WORKING
  const src = e.source.getActiveSheet();
  const r = e.range;

  if (r.rowStart == 1 || r.columnStart != 3) return;
  let dest;
  if (src.getName() == "New")
    dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Complete");
  else if (src.getName() == "Complete")
    dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("New");  
  src.getRange(r.rowStart,1,1,3).moveTo(dest.getRange(dest.getLastRow() 1,1,1,3));
  src.deleteRow(r.rowStart);

  
  // NOT WORKING
  src.getRange("A2:Z").sort([{column: 2, ascending: true}]);
  dest.getRange("A2:Z").sort([{column: 2, ascending: true}]);

}
 

Кроме того, после того, как произошло перемещение, я пытаюсь «переупорядочить»оба листа. Я пробовал использовать файл в текущем столбце, но мне пришлось вручную повторно фильтровать после перемещения. «Не работает» = после перемещения строк сортировка не выполняется!

Как можно повторно отсортировать оба листа после того, как строки были перемещены?

Ответ №1:

Добавить (при условии, что ваш скрипт дает ожидаемый результат):

 SpreadsheetApp.flush();
 

перед сортировкой
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush