Скрипт Google Apps: удалите строку с листа, если ячейка НЕ содержит значения из массива

#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  )}
  });
}