En AppSheet podemos eliminar correctamente registros de una tabla, pero… al visualizar en la hoja de Cálculo respectiva, notamos que esta operación deja filas vacías. La sumatoria de estas filas vacías puede mas adelante dificultar el análisis de la data (esto es, elaborar filtros, crear tablas dinámicas, etc).

Por lo señalado, se hace importante crear un mecanismo que permita la eliminación automática de las filas «vacías» de las hojas de Google Sheets.

Esto lo lograremos utilizando en combinación un BOT con un Script (Google Apps Script).

1- Creamos un nuevo Proyecto en Google Scripts (https://script.google.com/home)

2- Colocamos un nombre al Proyecto, por ejemplo: «borrarFilasVacias»

3- En ese proyecto borrar el código por default y pegar la rutina siguiente (colocar el ID de la hoja respectiva):

function deleteBlankRows() {
  
  var SS = SpreadsheetApp.openById("colocarIDdeHoja");
  
  // Get sheets
  var sheets = SS.getSheets();
  
  // Loop through sheets. Delete blank rows in each sheet.
  for (var s=0; s < sheets.length; s++) {
    var currentSheet = sheets[s];
    var sheetName = sheets[s].getName();
    var searchDataRange = currentSheet.getRange(1,1,currentSheet.getMaxRows(),currentSheet.getMaxColumns()); // get the ENTIRE sheet. not just where the data is.
    var searchValues = searchDataRange.getValues();
    var numRows = searchValues.length;
    var numCols = searchDataRange.getNumColumns();
    var rowsToDel = [];
    var delRow = -1;
    var prevDelRow = -2;
    var rowClear = false;
    
    // Loop through Rows in this sheet
    for (var r=0; r < numRows; r++) {
      
      // Loop through columns in this row
      for (var c=0; c < numCols; c++) {
        if (searchValues[r][c].toString().trim() === "") {
          rowClear = true;
        } else {
          rowClear = false;
          break;
        }
      }
      
      // If row is clear, add it to rowsToDel
      if (rowClear) {
        if (prevDelRow === r-1) {
          rowsToDel[delRow][1] = parseInt(rowsToDel[delRow][1]) + 1;
        } else {
          rowsToDel.push([[r+1],[1]]);
          delRow += 1;
        }
        prevDelRow = r;
      }
    }
    
    
    Logger.log("numRows: " + numRows);
    Logger.log("rowsToDel.length: " + rowsToDel.length);
    
    // Delete blank rows in this sheet, if we have rows to delete.
    if (rowsToDel.length>0) {
      // We need to make sure we don't delete all rows in the sheet. Sheets must have at least one row.
      if (numRows === rowsToDel[0][1]) {
        // This means the number of rows in the sheet (numRows) equals the number of rows to be deleted in the first set of rows to delete (rowsToDel[0][1]).
        // Delete all but the first row.
        if (numRows > 1) {
          currentSheet.deleteRows(2,numRows-1);
        }
      } else {
        // Go through each set of rows to delete them.
        var rowsToDeleteLen = rowsToDel.length;  
        for (var rowDel = rowsToDeleteLen-1; rowDel >= 0; rowDel--) {
          currentSheet.deleteRows(rowsToDel[rowDel][0],rowsToDel[rowDel][1]);
        }
      }
    }
  }
}

4- Guardamos el proyecto.

5- En AppSheet crear el bot que actúe cuando en un tabla dada se elimine un registro. (Delete) y que tenga como salida, la llamada a una rutina (Call Script).

6- Seleccionar con el explorador el script creado – en este caso le llamamos BorrarFilasVacias

7- Dar los permisos de la cuenta

8- Elegir la funcion a ser ejecutada. En este caso «deleteBlankRows()»

Cualquier duda, pueden consultarme por whatsapp. Dejo el vídeo relacionado:

Por admin

×

Hello!

Click one of our contacts below to chat on WhatsApp

× Escribinos en el Whatsapp!