eldelentes / comoayudarmx

Repositorio de información para ayudar en desastres naturales.
http://comoayudar.mx
MIT License
81 stars 104 forks source link

Limpieza de tarjetas. #259

Open eldelentes opened 7 years ago

eldelentes commented 7 years ago

Estamos pensando en de que forma podemos limpiar las tarjetas que se han agregado hasta el momento para mantener la información más fresca posible.

Por ahora todo lo estamos manejando desde este Doc: https://docs.google.com/spreadsheets/d/1zAFK1sSjIaHurnKzLx-e3GJZNmZ9QWfFSlIZLyYk8IE/edit#gid=1821226953

Lo que necesitamos es:

Puede ser algún script de google docs (No sé si exista algo asi)

jesteves commented 7 years ago

@eldelentes Lo que estás buscando es un script en Google Apps Script, que está basado en Javascript.

Para hacerlo:

A continuación les pongo un pequeño script que parece que funciona bien para eliminar los renglones no aprobados. Lo probé contra una copia de su hoja. Es solamente una idea como punto de partida, como para ir agregando cualquier condición que consideren necesaria.

Nota: en la prueba que hice me eliminó todos los renglones con FALSEexcepto uno. Creo que la diferencia está en el tipo de datos; tendrían que uniformizar.

El código va comentado.

Si puedo hacer algo más, con gusto...

jesteves commented 7 years ago
function myFunction() {
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = doc.getSheetByName("LA-HOJA");
  var values = sheet.getRange("A2:I").getValues();   // rango ya descontando el encabezado

  var row_del = new Array();  // acumulador de renglones a eliminar

  var APPROVED_COL = 7;       // columna "approved"

  // recorrido de análisis y acumulación
  // (!) hacia abajo
  for (var row = 0; row < values.length; row++) {   // row,       desde 0
    var sheet_row = row + 2;                        // sheet_row, desde 2

    Logger.log(' - %s, %s', sheet_row, values[row][APPROVED_COL] );

    // si el valor de "approved" es falso, se acumula el renglón, para eliminación
    if ( ! values[row][APPROVED_COL] ) {
      Logger.log(' - FALSE!');
      row_del.push( sheet_row );
    }
  }

  // recorrido de eliminación
  // (!) hacia arriba porque al borrar los índices cambian en los renglones que suceden al eliminado
  for (var i = row_del.length - 1; i >= 0; i--) {
    sheet.deleteRow( row_del[i] ); 
  }
}
jesteves commented 7 years ago

Ah! Un par de notas extras.

jorandradefig commented 7 years ago

¿Por qué https://spreadsheets.google.com/feeds/list/1zAFK1sSjIaHurnKzLx-e3GJZNmZ9QWfFSlIZLyYk8IE/olipwxe/public/values?alt=json sólo regresa la segunda hoja y no Form Responses 1 @eldelentes @miguejs?

jesteves commented 7 years ago

@jorandradefig Eso es porque cada worksheet tiene su propio id. El de la segunda hoja es olipwxe (que está antes de /public en el URL).

jorandradefig commented 7 years ago

Gracias @jesteves, ¿eso significa que este issue no está o ya está?

jesteves commented 7 years ago

@jorandradefig Ni idea. Depende de si ya cuentan con la herramienta de mantenimiento por la que entiendo que preguntaban originalmente, o bien si con el uso de filtros (el merge en #283) tal cosa es irrelevante. IMHO, tal como se expuso el problema originalmente, yo diría que todavía es vigente... Pero es más bien pregunta para @eldelentes.

jorandradefig commented 7 years ago

Ok @jesteves, porque tengo la idea de cómo hacerlo. Quiero tomar este issue, salvo que @eldelentes diga lo contrario. Abrazo a ambos.