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 la hoja de cálculo.

Objetivos

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

Requisitos previos

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

  • Una Cuenta de Google (es posible que las cuentas de Google Workspace requieran 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 secuencia 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 de guardar.

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

  7. Asigna el nombre Quitar filas duplicadas a la secuencia de comandos y haz clic en Cambiar nombre.

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

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

  10. Ingresa una descripción de la biblioteca, como Quitar filas duplicadas. Cualquier persona que tenga 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 visualización 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, dales 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, crea una copia de la hoja de cálculo Ejemplo de filas duplicadas.
  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. Regresa 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 leer la hoja fila por fila, pero las operaciones de JavaScript son mucho más rápidas que comunicarse con otros servicios, como Hojas de cálculo. Cuanto menos llamadas realices, más rápido será. 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 de 2 dimensiones 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 que no son duplicadas.

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

El primer bucle for itera sobre cada fila del array 2D 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 envía al 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 adapte 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 sentencia 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 sentencia condicional anterior encuentra duplicados cada vez que dos filas tienen los mismos datos en la primera y segunda columna de la hoja.

Colaboradores

Romain Vialard, experto en Google Developers, creó este ejemplo. Sigue a Romain en Twitter @romain_vialard.

Google mantiene este ejemplo con la ayuda de expertos en desarrollo de Google.

Próximos pasos