Guia de início rápido da biblioteca

Crie uma biblioteca do Apps Script que pode ser usada para remover linhas duplicadas em dados de planilhas.

Objetivos

  • Configure o script.
  • Execute o script.

Pré-requisitos

Para usar esta amostra, você precisa atender aos seguintes pré-requisitos:

  • Uma Conta do Google (as contas do Google Workspace podem exigir a aprovação do administrador).
  • Um navegador da Web com acesso à Internet.

Configurar o script

Para criar a biblioteca, siga estas etapas:

  1. Faça login na sua Conta do Google.
  2. Para abrir o editor de script, acesse script.google.com.
  3. Na parte de cima à esquerda, clique em Novo projeto.
  4. Apague o código no editor de script (se houver algum) e cole o código abaixo.

    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. Clique em Salvar Ícone Salvar.

  6. No canto superior esquerdo, clique em Projeto sem título.

  7. Nomeie o script como Remover linhas duplicadas e clique em Renomear.

  8. Clique em Implantar > Nova implantação.

  9. Ao lado de Selecionar tipo, clique em Habilitar tipos de implantação O ícone para ativar tipos de implantação > Biblioteca.

  10. Insira uma descrição da biblioteca, como Remover linhas duplicadas. Qualquer pessoa com acesso à biblioteca pode ver essa descrição.

  11. Clique em Implantar.

  12. À esquerda, clique em Configurações do projeto O ícone das configurações do projeto.

  13. Em IDs, copie o ID do script para usar em uma etapa posterior.

Executar o script

Para usar uma biblioteca, você precisa ter pelo menos permissões de leitura para o projeto do Apps Script dela. Como você criou a biblioteca, tem as permissões necessárias para usá-la. Se quiser permitir que outras pessoas usem a biblioteca, dê a elas permissão de leitura para o projeto do Apps Script.

Para usar a biblioteca, siga estas etapas:

  1. Abra uma planilha Google com dados e linhas duplicadas. Para usar uma planilha de exemplo, faça uma cópia da planilha Exemplo de linhas duplicadas.
  2. Clique em Extensões > Apps Script.
  3. Ao lado de Bibliotecas, clique em Adicionar uma biblioteca .
  4. Na seção ID do script, cole o ID do script do projeto da biblioteca do Apps Script que você copiou na seção anterior.
  5. Clique em Pesquisar.
  6. Na seção Versão, selecione 1.
  7. Clique em Adicionar.
  8. Apague o código no editor de script (se houver algum) e cole o código abaixo.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. No menu suspenso de função, selecione runLibrary.

  10. Clique em Executar.

  11. Volte para a planilha e confira os dados atualizados sem linhas duplicadas.

Revisar o código

Para revisar o código do Apps Script dessa solução, clique em Ver código-fonte abaixo:

Ver o código-fonte

Primeiro, o script faz uma única chamada à planilha para recuperar todos os dados. Você pode ler a planilha linha por linha, mas as operações do JavaScript são muito mais rápidas do que falar com outros serviços, como o Google Sheets. Quanto menos chamadas você fizer, mais rápido será o processo. Isso é importante porque cada execução de script tem um tempo máximo de execução de 6 minutos.

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

A variável data é uma matriz bidimensional do JavaScript que contém todos os valores da planilha. newData é uma matriz vazia em que o script coloca todas as linhas não duplicadas.

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

O primeiro loop for itera em cada linha da matriz bidimensional data. Para cada linha, o segundo loop testa se outra linha com dados correspondentes já existe na matriz newData. Se não for um duplicado, a linha será inserida na matriz newData.

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

Por fim, o script exclui o conteúdo atual da planilha e insere o conteúdo da matriz newData.

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

Modificações

Você pode editar a biblioteca o quanto quiser para atender às suas necessidades. Confira abaixo uma modificação opcional.

Remover linhas com dados correspondentes em algumas colunas

Em vez de remover linhas que correspondem totalmente, talvez você queira remover linhas com dados correspondentes em apenas uma ou duas das colunas. Para fazer isso, mude a instrução condicional.

No exemplo de código, atualize a seguinte linha:

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

Substitua a linha pelo seguinte código:

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

A instrução condicional acima encontra duplicatas sempre que duas linhas têm os mesmos dados na primeira e na segunda colunas da planilha.

Colaboradores

Esta amostra foi criada por Romain Vialard, um Google Developer Expert. Siga o Romain no Twitter @romain_vialard.

Esta amostra é mantida pelo Google com a ajuda dos Google Developer Experts.

Próximas etapas