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, necesitas 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, dirígete a script.google.com.
  3. En la esquina superior izquierda, haz clic en Proyecto nuevo.
  4. Borre cualquier código que haya en el editor de secuencias de comandos y pegue 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. Asígnele el nombre Quitar filas duplicadas y haga clic en Cambiar nombre.

  8. Haz clic en Implementar > Implementación nueva.

  9. Junto a Seleccionar tipo, haz clic en Habilitar tipos de implementación Ícono para habilitar 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 la 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. Desde que creaste la biblioteca, tienes los permisos necesarios para usarla. Si quieres permitir que otras personas usen la biblioteca, otórgales permiso de lectura para el proyecto de Apps Script.

Para usar la biblioteca, sigue estos pasos:

  1. Abre una hoja de cálculo de Google que contenga datos con filas duplicadas. Para usar una hoja de cálculo de muestra, crea una copia de la hoja de cálculo Muestras 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. Borre cualquier código que haya en el editor de secuencias de comandos y pegue el código que se encuentra a continuación.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. En el menú desplegable de la función, 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 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 Hojas de cálculo. Cuantas menos llamadas hagas, más rápido será. Esto es importante porque cada ejecución de secuencia de comandos tiene un tiempo máximo de ejecución 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 arreglo 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 en cada fila del arreglo bidimensional de data. Para cada fila, el segundo bucle comprueba si ya existe otra fila con datos coincidentes en el arreglo 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 arreglo 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 todas las veces que quieras según tus necesidades. A continuación, se muestra una modificación opcional.

Quitar filas con datos coincidentes en algunas columnas

En lugar de quitar las filas que coinciden por completo, es posible que quieras quitar las filas con datos coincidentes en solo una o dos de las columnas. Para hacer eso, puedes cambiar la instrucció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 segunda columna de la hoja.

Colaboradores

Esta muestra fue creada por Romain Vialard, un experto de Google Developers. Sigue a Romain en Twitter @romain_vialard.

Google mantiene esta muestra con la ayuda de Expertos de Google Developers.

Próximos pasos