Лист с именем «Отчет» использует запрос для импорта данных из нескольких листов.Все листы, кроме одного, получают данные из других файлов.
Существует лист с именем SavedDB, на котором я могу сохранить строки, которые я хочу сохранить на случай, если они будут удалены из их исходного источника.Я получил это, чтобы работать с помощью других сообщений.
Я создал две кнопки, сохранить и удалить, и каждая строка имеет флажок, связанный с каждой кнопкой.
Это то, чтоэто выглядит как
Всякий раз, когда пользователь нажимает кнопку Сохранить на листе «Отчет», сценарий копирует все строки, отмеченные как ИСТИНА, на лист SavedDB, затем он импортируется запросом в«Форматированный сохранен», который в свою очередь импортируется запросом в «Отчет»
Теперь я пытаюсь реализовать обратный процесс.Когда пользователь нажимает кнопку «Удалить», все строки, в которых проверяется удаление столбца, должны быть удалены из «SavedDB».
Удаленная строка должна иметь точное совпадение в каждом столбце, кроме первых 6, которые не экспортируются.в первую очередь «SavedDB».
Это то, что у меня есть:
function deleteRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Report'); //source sheet
var testrange = sheet.getRange('D:D'); //range to check
var testvalue = (testrange.getValues());
var csh = ss.getSheetByName('SavedDB'); //destination sheet
var data = [];
var dataNew =[];
//Condition check in D:D; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
if ( testvalue[i] == 'true') {
data.push.apply(data,sheet.getRange(i+1,7,1,25).getValues());
}
}
//####THIS IS WHERE I AM STUCK###
//GET ALL NON-EMPTY ROWS ON 'SavedDB IN THE ARRAY dataNew
//COMPARE BOTH ARRAYS data AND dataNew
// ADD ALL THE UNIQUE ROWS, AND IF A ROW IS REPEATED DISCARD IT ALTOGETHER
//SAVE NEW VALUES TO 'savedDB'
//######
//changes the check boxes back to false(unchecked)
var resetRange = sheet.getRange('E3:E');
var values = resetRange.getValues();
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] == true) {
values[i][j] = false; // Modified
}
}
}
resetRange.setValues(values);
}
Спасибо, ребята!