Open eldelentes opened 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
FALSE
excepto 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...
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] );
}
}
Ah! Un par de notas extras.
El editor de scripts tiene su propio registro... Lo que imprimas con Logger.log()
lo puedes revisar tras la ejecución en Ver → Registros. En el código dejé un par de líneas de debug con esa llamada...
Es normal que la ejecución de los scripts no sea extremadamente rápida. Finalmente el browser hace llamadas atómicas a la API que corresponda de Google Apps. Tras la ejecución también la hoja tarda un poquito en recargarse para que se vea el efecto.
¿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?
@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).
Para verlos todos los de este documento puedes consultar: https://spreadsheets.google.com/feeds/worksheets/1zAFK1sSjIaHurnKzLx-e3GJZNmZ9QWfFSlIZLyYk8IE/public/basic?alt=json
De allí, el feed de la primera hoja lo obtienes [usando el id ou4b7df
] con: https://spreadsheets.google.com/feeds/list/1zAFK1sSjIaHurnKzLx-e3GJZNmZ9QWfFSlIZLyYk8IE/ou4b7df/public/full?alt=json
Gracias @jesteves, ¿eso significa que este issue no está o ya está?
@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.
Ok @jesteves, porque tengo la idea de cómo hacerlo. Quiero tomar este issue, salvo que @eldelentes diga lo contrario. Abrazo a ambos.
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:
FALSE
timestamp
.Puede ser algún script de google docs (No sé si exista algo asi)