Устранение неполадок сортировки Google Script (работает как 2 функции, но не в сочетании) - PullRequest
0 голосов
/ 13 ноября 2018

Я работаю со скриптом приложений Google, чтобы отсортировать данные в столбцах A-C по номеру в столбце D. Номер столбца D зависит от данных в столбцах A-C (см. Ниже).

https://docs.google.com/spreadsheets/d/11QSZPAl3nCs7nzpZIR4FzjfkPUyBBut1pD2K0919UB8/edit?usp=sharing

Я пытаюсь сделать так, чтобы вверху была пустая строка (в A6: C6), чтобы можно было вводить новые данные, после сортировки они будут перемещены в основной список (A7: C299) и новая пустая строка появится в A6: C6 снова.

Я попытался сделать это, переместив новую запись в конец листа, затем отсортировав ее, но по какой-то причине она не сортирует новую запись после ее перемещения. Если я удаляю код для сортировки, он перемещается правильно, и если у меня просто есть код для сортировки (после того, как он скопировал данные из A6: C6), он также работает, но когда функции объединяются, он не ' т. Есть идеи или другой способ сделать это? Спасибо!

function SortList() {

var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange("A7:D299");

// Takes values in first row, moves then to end of list and clears contents in first row, then sorts list

var copyrange = sheet.getRange("A6:C6");
var pasterange = sheet.getRange("A298:C298");
var copyvalues = copyrange.getValues();


pasterange.setValues(copyvalues); 
copyrange.clearContent();

// Sorts by the values in the first column (A)
range.sort({column: 4, ascending: false});

}

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете попробовать добавить метод flush() между двумя действиями.

вровень ()

Применяет все ожидающие изменения таблицы.

Операции с электронными таблицами иногда объединяются для улучшения производительность, например, при выполнении нескольких вызовов Range.getValue (). Однако иногда вы можете убедиться, что все ожидающие изменения сделаны сразу, например, чтобы показать данные пользователей в виде сценария выполнения.

function SortList() {

var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange("A7:D299");

// Takes values in first row, moves then to end of list and clears contents in first row, then sorts list

var copyrange = sheet.getRange("A6:C6");
var pasterange = sheet.getRange("A298:C298");
var copyvalues = copyrange.getValues();

pasterange.setValues(copyvalues); 
copyrange.clearContent();

//Flush
SpreadsheetApp.flush();

// Sorts by the values in the first column (A)
range.sort({column: 4, ascending: false});

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