Estoy recuperando los valores de una columna, donde tenemos muchos duplicados. El objetivo es mantener solo los valores únicos, pero ninguno de los métodos que probé funcionó.
Esto es lo que he intentado:
function listaProdutos() { const ssBDCadProd = SpreadsheetApp.openById(CAD_PRODUTO); const sheetBDCadProd = ssBDCadProd.getSheetByName('CadProduto'); let listaProd = sheetBDCadProd.getRange(2, 6, sheetBDCadProd.getLastRow(), 1).getValues(); let uniques = [...new Set(listaProd)]; Logger.log('Únicos: ' + uniques); }
Aquí hay otro intento:
function listaProdutos() { const ssBDCadProd = SpreadsheetApp.openById(CAD_PRODUTO); const sheetBDCadProd = ssBDCadProd.getSheetByName('CadProduto'); let listaProd = sheetBDCadProd.getRange(2, 6, sheetBDCadProd.getLastRow(), 1).getValues(); let uniques = removeDups(listaProd); Logger.log('Únicos: ' + uniques); } function removeDups(array) { var outArray = []; array.sort(); outArray.push(array[0]); for (var n in array) { Logger.log(outArray[outArray.length - 1] + ' = ' + array[n] + ' ?'); if (outArray[outArray.length - 1] != array[n]) { outArray.push(array[n]); } } return outArray; }
Todos ellos registran los valores repetidamente y no estoy seguro si me estoy perdiendo alguna característica implícita de cómo entran los datos con getValues()
¡Gracias!
En su script, let listaProd = sheetBDCadProd.getRange(2, 6, sheetBDCadProd.getLastRow(), 1).getValues();
es la matriz bidimensional como [["f2"],["f3"],,,]
. En este caso, [...new Set(listaProd)]
no puede eliminar las filas duplicadas. Cuando desee eliminar las filas duplicadas, ¿qué tal la siguiente modificación?
let uniques = [...new Set(listaProd)];
let uniques = [...new Set(listaProd.map(([f]) => f))];
Esto devuelve una matriz unidimensional. Cuando desee devolver la matriz bidimensional, utilice la siguiente modificación.
let uniques = [...new Set(listaProd.map(([f]) => f))].map(f => [f]);
Logger.log('Únicos: ' + uniques);
, incluso cuando los uniques
son una matriz bidimensional, se muestra el valor del valor separado por comas como f2,f3,,,,
. Tenga cuidado con esto.