Solución:
También puedes usar filter()
.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Test");
var range_input = ss.getRange("A1:A").getValues();
var filtered_input = range_input.filter(String);
-
Quiere lograr el siguiente resultado.
-
Aporte
A1=abc A2=def A3= A4= A5= A6=uvw A7=xyz
-
Producción
Browser.msgBox(range_input) // results = abc,def,uvw,xyz
-
En la etapa actual, pensé que aunque las comprensiones de var result = [i for each (i in range_input)if (isNaN(i))]
todavía se puede utilizar, no es adecuado para esta situación como el comentario de tehhowch. Alto creo que filter()
es adecuado para esta situación. En esta actualización, me gustaría actualizar esto proponiendo otra solución. Si esto fue útil, me alegro.
Patrón 1:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Test");
var range_input = ss.getRange("A1:A").getValues();
var result = range_input.reduce(function(ar, e) {
if (e[0]) ar.push(e[0])
return ar;
}, []);
Logger.log(result) // ["abc","def","uvw","xyz"]
Browser.msgBox(result)
- En este patrón, las filas vacías son eliminadas por
reduce()
.
Patrón 2:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Test");
var range_input = ss.getRange("A1:A").getValues();
var result = [].concat.apply([], range_input).filter(String); // or range_input.filter(String).map(String)
Logger.log(result) // ["abc","def","uvw","xyz"]
Browser.msgBox(result)
- En este patrón, las filas vacías son eliminadas por
filter()
y cuandofilter()
se utiliza, se devuelve la matriz bidimensional. Para devolver una matriz de 1 dimensión, la matriz se aplana.
Patrón 3:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Test");
var range_input = ss.getRange("A1:A").getValues();
var criteria = SpreadsheetApp.newFilterCriteria().whenCellNotEmpty().build();
var f = ss.getRange("A1:A").createFilter().setColumnFilterCriteria(1, criteria);
var url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/gviz/tq?tqx=out:csv&gid=" + sheet.getSheetId() + "&access_token=" + ScriptApp.getOAuthToken();
var res = UrlFetchApp.fetch(url);
f.remove();
var result = Utilities.parseCsv(res.getContentText()).map(function(e) {return e[0]});
Logger.log(result) // ["abc","def","uvw","xyz"]
Browser.msgBox(result)
- En este patrón, el filtro elimina las filas vacías y luego recupera los valores filtrados.
Resultado:
Referencias:
- reducir()
- filtrar()
- mapa()
- Filtro de clase
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)