Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

153
Visualizações
Encuentre y reemplace filas duplicadas con los datos más recientes en un rango definido usando Google Apps Script

Hoja de Google usando las columnas A:M. Cada día, se pega manualmente un nuevo conjunto de datos sin procesar (alrededor de 30 filas) en la siguiente fila disponible en la columna B. Estos datos sin procesar contienen filas duplicadas que tienen algunos contenidos de columna actualizados desde el día anterior. La columna C contiene el número de trabajo que se usa para determinar los duplicados, y la columna A contiene una identificación secuencial del 1 al n.

Necesito crear una función que encuentre filas duplicadas basadas en la columna C, luego use la fila con el valor más grande de la Columna A para sobrescribir los datos en el valor más bajo de la Columna A para que el orden de los números de trabajos agregados a la hoja nunca cambie una vez al el trabajo está ahí. Imagen de hoja actualmente En la imagen; el trabajo 22,484 en la fila 4 tendría una fecha de vencimiento actualizada al 5/10/22 y los datos del trabajo en la fila 5 se eliminarían. Para los datos brutos de cada día habrá 20-25 entradas duplicadas.

Las filas máximas utilizadas serán 5000, por lo que el script puede ser ineficiente si es necesario.

¡Gracias! Connor

¡Aquí hay un enlace a la hoja ficticia ! (Gracias Mike)

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Solución:

 function myFunction() { const sheet = SpreadsheetApp.getActiveSpreadsheet() .getSheetByName(`YOUR_SHEET`) let data = sheet.getRange(`B2:M`) .getDisplayValues() .filter(row => row.every(cell => cell.length)) const duplicates = [...new Set(data.flatMap(i => i[1]))].map(i => data.filter(item => item[1] === i)) .filter(i => i.length > 1) .map(i => i[i.length-1]) duplicates.forEach(i => { const removeRow = data.splice(data.findIndex(item => item === i), 1) data[data.findIndex(item => item[1] === i[1])] = removeRow.flat() }) sheet.getRange(`B2:M`).clear() sheet.getRange(2, 2, data.length, data[0].length).setValues(data) }

Esto obtendrá todas las filas no vacías de datos de la tabla, encontrará los duplicados y reemplazará las entradas anteriores (antiguas) con los nuevos datos.

¡Hazme saber si esto funciona para ti!

Comentado:

 function myFunction() { const sheet = SpreadsheetApp.getActiveSpreadsheet() .getSheetByName(`YOUR_SHEET`) // Get the target range.. let data = sheet.getRange(`B2:M`) // As text.. (Avoids date issues) .getDisplayValues() // ...and ignore blank rows. .filter(row => row.every(cell => cell.length)) // Get all unique `Job No`'s and replace their value in this array with the relevant rows from 'data'... const duplicates = [...new Set(data.flatMap(i => i[1]))].map(i => data.filter(item => item[1] === i)) // Keep all `Job No`'s rows with more than 1 entry.. .filter(i => i.length > 1) // ...And keep only the most recent. .map(i => i[i.length-1]) // For each of these duplicates.. duplicates.forEach(i => { // Remove the 'new' row.. const removeRow = data.splice(data.findIndex(item => item === i), 1) // Replace the 'old' row.. data[data.findIndex(item => item[1] === i[1])] = removeRow.flat() }) sheet.getRange(`B2:M`).clear() sheet.getRange(2, 2, data.length, data[0].length).setValues(data) }
about 4 years ago · Juan Pablo Isaza Relatório

0

Eliminar Duplicados

 function removeDupsOnColC() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName(`DEBUG`) let data = sh.getRange(`B2:M` + sh.getLastRow()).getDisplayValues(); let ua = []; let oA = []; data.forEach((r,i) => { if(!~ua.indexOf(r[2])) { ua.push(r[2]); oA.push(r); } }) sh.getRange(2, 2, oa.length, oa[0].length).setValues(oa) }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda