Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!