Saltar al contenido

Cómo ignorar los valores de celda vacíos para getRange (). GetValues ​​()

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 cuando filter() 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:

ingrese la descripción de la imagen aquí

Referencias:

  • reducir()
  • filtrar()
  • mapa()
  • Filtro de clase
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *