Guía de inicio rápido de la biblioteca

Compila una biblioteca de Apps Script que puedas usar para quitar filas duplicadas en los datos de hojas de cálculo.

Objetivos

  • Configura la secuencia de comandos.
  • Ejecuta la secuencia de comandos.

Requisitos previos

Para usar esta muestra, necesitas cumplir con los siguientes requisitos previos:

  • Una Cuenta de Google (es posible que las cuentas de Google Workspace requieran la aprobación del administrador)
  • Un navegador web con acceso a Internet

Configura la secuencia de comandos

Para compilar la biblioteca, sigue estos pasos:

  1. Accede a tu Cuenta de Google.
  2. Para abrir el editor de secuencias de comandos, ve a script.google.com.
  3. En la esquina superior izquierda, haz clic en Proyecto nuevo.
  4. Borra cualquier código que haya en el editor de secuencias de comandos y pega el código que se encuentra a continuación.

    sheets/removingDuplicates/removingDuplicates.gs
    /**
     * Removes duplicate rows from the current sheet.
     */
    function removeDuplicates() {
      const sheet = SpreadsheetApp.getActiveSheet();
      const data = sheet.getDataRange().getValues();
      const uniqueData = {};
      for (let row of data) {
        const key = row.join();
        uniqueData[key] = uniqueData[key] || row;
      }
      sheet.clearContents();
      const newData = Object.values(uniqueData);
      sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
    }
  5. Haz clic en Guardar Ícono Guardar.

  6. En la esquina superior izquierda, haz clic en Proyecto sin título.

  7. Asigna el nombre Remove duplicate rows a tu secuencia de comandos y haz clic en Rename.

  8. Haz clic en Implementar > Nueva implementación.

  9. Junto a Seleccionar tipo, haz clic en Habilitar los tipos de implementación Ícono para habilitar los tipos de implementación > Biblioteca.

  10. Ingresa una descripción de la biblioteca, como Remove duplicate rows. Cualquier persona con acceso a la biblioteca puede ver esta descripción.

  11. Haz clic en Implementar.

  12. A la izquierda, haz clic en Configuración del proyecto El ícono de configuración del proyecto.

  13. En IDs, copia el ID de la secuencia de comandos para usarlo en un paso posterior.

Ejecuta la secuencia de comandos:

Para usar una biblioteca, debes tener al menos permisos de lectura para su proyecto de Apps Script. Como creaste la biblioteca, tienes los permisos necesarios para usarla. Si quieres permitir que otras personas usen la biblioteca, otórgales permiso de visualización para el proyecto de Apps Script.

Para usar la biblioteca, sigue estos pasos:

  1. Abre una hoja de cálculo de Hojas de cálculo de Google que tenga datos con filas duplicadas. Para usar una hoja de cálculo de muestra, haz una copia de la hoja de cálculo Filas duplicadas de muestra.
  2. Haz clic en Extensiones > Apps Script.
  3. Junto a Bibliotecas, haz clic en Agregar una biblioteca .
  4. En la sección ID de secuencia de comandos, pega el ID de secuencia de comandos del proyecto de Apps Script de la biblioteca que copiaste en la sección anterior.
  5. Haz clic en Buscar.
  6. En la sección Versión, selecciona 1.
  7. Haz clic en Agregar.
  8. Borra cualquier código que haya en el editor de secuencias de comandos y pega el código que se encuentra a continuación.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. En el menú desplegable de funciones, selecciona runLibrary.

  10. Haz clic en Ejecutar.

  11. Vuelve a la hoja de cálculo para ver los datos actualizados sin filas duplicadas.

Revisa el código

Para revisar el código de Apps Script de esta solución, haz clic en Ver código fuente a continuación:

Ver el código fuente

Primero, la secuencia de comandos realiza una sola llamada a la hoja de cálculo para recuperar todos los datos. Puedes optar por leer la hoja fila por fila, pero las operaciones de JavaScript son considerablemente más rápidas que comunicarse con otros servicios, como Spreadsheet. Cuantas menos llamadas hagas, más rápido se completará el proceso. Esto es importante porque cada ejecución de secuencia de comandos tiene un tiempo de ejecución máximo de 6 minutos.

sheets/removingDuplicates/removingDuplicates.gs
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();

La variable data es un array bidimensional de JavaScript que contiene todos los valores de la hoja. newData es un array vacío en el que la secuencia de comandos coloca todas las filas no duplicadas.

sheets/removingDuplicates/removingDuplicates.gs
const newData = Object.values(uniqueData);

El primer bucle for itera sobre cada fila del array bidimensional data. Para cada fila, el segundo bucle prueba si ya existe otra fila con datos coincidentes en el array newData. Si no es un duplicado, la fila se inserta en el array newData.

sheets/removingDuplicates/removingDuplicates.gs
uniqueData[key] = uniqueData[key] || row;

Por último, la secuencia de comandos borra el contenido existente de la hoja y, luego, inserta el contenido del array newData.

sheets/removingDuplicates/removingDuplicates.gs
sheet.clearContents();
const newData = Object.values(uniqueData);
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);

Modificaciones

Puedes editar la biblioteca tanto como quieras para que se ajuste a tus necesidades. A continuación, se muestra una modificación opcional.

Cómo quitar filas con datos coincidentes en algunas columnas

En lugar de quitar las filas que coinciden por completo, es posible que desees quitar las filas con datos coincidentes en solo una o dos de las columnas. Para ello, puedes cambiar la declaración condicional.

En el código de muestra, actualiza la siguiente línea:

    if(row.join() == newData[j].join()){
      duplicate = true;
    }

Reemplaza la línea por el siguiente código:

    if(row[0] == newData[j][0] && row[1] == newData[j][1]){
      duplicate = true;
    }

La instrucción condicional anterior encuentra duplicados cada vez que dos filas tienen los mismos datos en la primera y la segunda columna de la hoja.

Colaboradores

Esta muestra fue creada por Romain Vialard, un Google Developer Expert. Sigue a Romain en Twitter @romain_vialard.

Google mantiene esta muestra con la ayuda de los Google Developer Experts.

Próximos pasos