Guia de início rápido da biblioteca

Crie uma biblioteca do Google Apps Script que você pode usar para remover linhas duplicadas em dados de planilha.

Objetivos

  • Configurar o script.
  • Executar o script.

Pré-requisitos

Para usar este exemplo, você precisa dos 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, faça o seguinte:

  1. Faça login na sua Conta do Google.
  2. Para abrir o editor de script, acesse script.google.com.
  3. No canto superior esquerdo, clique em Novo projeto.
  4. Exclua 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 (const 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 O ícone para salvar o projeto.

  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 Ativar 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, é necessário ter pelo menos permissões de visualização para o projeto do Apps Script. Como você criou a biblioteca, tem as permissões necessárias para usá-la. Se quiser permitir que outras pessoas usem a biblioteca, conceda a elas permissão de leitura para o projeto do Apps Script.

Para usar a biblioteca, faça o seguinte:

  1. Abra uma planilha do Google Sheets com dados e linhas duplicadas. Para usar uma planilha de amostra, 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 do Apps Script da biblioteca que você copiou na seção anterior.
  5. Clique em Pesquisar.
  6. Na seção Versão, selecione 1.
  7. Clique em Adicionar.
  8. Exclua 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ções, selecione runLibrary.

  10. Clique em Executar.

  11. Volte à planilha para ver 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:

Ver o código-fonte

Primeiro, o script faz uma única chamada para a planilha para recuperar todos os dados. Você pode ler a linha da planilha por linha, mas as operações do JavaScript são consideravelmente mais rápidas do que a comunicação com outros serviços, como o Planilhas. Quanto menos chamadas você fizer, mais rápido será. 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 na 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 uma duplicata, a linha será enviada para a 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. A seção a seguir contém uma modificação opcional.

Remover linhas com dados correspondentes em algumas colunas

Em vez de remover linhas que correspondam totalmente, talvez você queira remover linhas com dados correspondentes em apenas uma ou duas colunas. Para fazer isso, você pode mudar 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 anterior encontra duplicatas sempre que duas linhas têm os mesmos dados na primeira e na segunda colunas da planilha.

Colaboradores

Este exemplo foi criado por Romain Vialard, um Google Developer Expert. Siga Romain no Twitter @romain_vialard.

Este exemplo é mantido pelo Google com a ajuda de Especialistas do Google Developers.

Próximas etapas