#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