#arrays #google-apps-script #google-sheets #delete-row
Вопрос:
В электронных таблицах Google у меня есть «Таблица данных». Ячейки в столбце «J» содержат » Имя столбца «и коды языков, такие как» en»,» fr», «de» и так далее. Я пытаюсь удалить все строки, кроме строк со значениями из массива «valuesToLeave».
Кто-нибудь может сказать мне, где я здесь ошибаюсь?
function deleteRowsLangs() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('DataSheet');
var r = s.getRange('J:J');
var allValues = r.getValues();
var valuesToLeave = ["en", "fr", "de"];
for(var i=allValues.length-1;i>=0;i--)
if(allValues[i] != valuesToLeave[0]){
s.deleteRow(i 1);
} else {
//doNothing
}
}
Ответ №1:
function deleteRowsLangs() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('DataSheet');
const rg = sh.getRange(1,10,sh.getLastRow(),1);
const vs = rg.getValues().flat();
const vtl = ["en", "fr", "de"];
let d = 0;
vs.forEach((e,i) => {
if(!~vtl.indexOf(e)){sh.deleteRow(i 1 - d )}
});
}