- Вы хотите удалить строки, для которых установлен флажок столбца "C" в имени листа "Сегодня".
- Флажок установлен в "C6: C ".
- Вы хотите добиться этого с помощью Google Apps Script.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Точки модификации:
- Стоимость l oop может быть уменьшена путем извлечения диапазона данных.
- При удалении строки и использовании обратного l oop процесс может быть проще. Потому что, когда строка удаляется, номер строки изменяется. Пожалуйста, будьте осторожны.
Шаблон 1:
В этом шаблоне используется служба электронных таблиц, такая как SpreadsheetApp
.
Модифицированный скрипт:
function myFunction() {
var sheetName = "Today"; // Please set the sheet name.
var Today = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var values = Today.getRange('C6:C' + Today.getLastRow()).getValues();
for (var i = values.length - 1; i >= 0; i--) {
if (values[i][0]) Today.deleteRow(i + 6);
}
}
Шаблон 2:
В этом шаблоне используется Sheets API. Так что , пожалуйста, включите Sheets API в службах Advanced Google. Когда количество удаляемых строк велико, стоимость процесса для этого метода ниже, чем для шаблона 1.
Пример сценария:
function myFunction() {
var sheetName = "Today"; // Please set the sheet name.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
var sheetId = sheet.getSheetId();
var values = sheet.getRange('C6:C' + sheet.getLastRow()).getValues();
var requests = values.reduce(function(ar, [e], i) {
if (e) ar.push({deleteDimension:{range:{sheetId:sheetId,dimension:"ROWS",startIndex:(i + 5),endIndex:(i + 6)}}});
return ar;
}, []).reverse();
Sheets.Spreadsheets.batchUpdate({requests: requests}, ss.getId());
}
Ссылки:
Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.