Necesito crear un script que elimine todas las filas y columnas vacías (sin valor en ninguna celda de la fila/columna) de la hoja indicada a partir de 1 columna/fila, al mismo tiempo, usando la actualización por lotes. Encontré un script aquí y traté de adaptarlo a mis necesidades.
Lo he modificado como se muestra a continuación, pero hago algo mal con los argumentos de función (y probablemente algo más).
function clear(){ const sheetName = "Parser"; // Please set the sheet name. const ss = SpreadsheetApp.getActiveSpreadsheet(); const sh = ss.getSheetByName(sheetName); const sheetId = sh.getSheetValues; var values = sh.getRange('B1:B').getValues(); var requests = values.reduce((ar, value) => { var maxColumns = sh.getMaxColumns(); var lastColumn = sh.getLastColumn(); var maxRows = sh.getMaxRows(); var lastRow = sh.getLastRow(); if (lastRow == 0 && lastColumn == 0 && maxRows > 1 && maxColumns > 1) { ar.push({deleteDimension: {range: {sheetId: sheetId, dimension: "ROWS", startIndex: 1}}}); ar.push({deleteDimension: {range: {sheetId: sheetId, dimension: "COLUMNS", startIndex: 1}}}); } Logger.log(ar); return ar; }, []); if (requests.length > 0) { Sheets.Spreadsheets.batchUpdate({requests: requests}, id); } };pidiendo ayuda!
function clean() { const sheetName = "Parser" const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName) const cleanRows = sheet.getDataRange() .getValues() .filter(row => !row.every(cell => cell === ``)) const cleanCols = cleanRows[0].map((_, index) => cleanRows.flatMap(row => row[index])) .filter(col => !col.every(cell => cell === ``)) const values = cleanCols[0].map((_, index) => cleanCols.flatMap(row => row[index])) sheet.getDataRange().clearContent() sheet.getRange(1, 1, values.length, values[0].length).setValues(values) if (sheet.getLastRow() !== sheet.getMaxRows()) sheet.deleteRows(sheet.getLastRow()+1, sheet.getMaxRows()-sheet.getLastRow()) if (sheet.getLastColumn() !== sheet.getMaxColumns()) sheet.deleteColumns(sheet.getLastColumn()+1, sheet.getMaxColumns()-sheet.getLastColumn()) }Esto filtrará todas las filas vacías, rotará la matriz, filtrará todas las 'columnas' vacías, luego rotará la matriz hacia atrás y actualizará la hoja.
function clear() { const sheetName = "Parser" const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName) sheet.getRange(2, 1, sheet.getLastRow()-1, sheet.getLastColumn()).clearContent() }¡Hazme saber si esto funciona para ti!