Guia de início rápido da biblioteca

Crie uma biblioteca do Apps Script para remover linhas duplicadas nos dados da planilha.

Objetivos

  • Configure o script.
  • Execute o script.

Pré-requisitos

Para usar esta amostra, 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, siga estas etapas:

  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. 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 Ativar tipos de implantação Ícone para ativar tipos de implantação > Biblioteca.

  10. Insira uma descrição da biblioteca, como Remove duplicate rows. Qualquer pessoa com acesso à biblioteca pode conferir essa descrição.

  11. Clique em Implantar.

  12. À esquerda, clique em Configurações do projeto Í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, é preciso ter pelo menos permissões de leitura no projeto do Apps Script. Como você criou a biblioteca, você tem as permissões necessárias para usá-la. Para permitir que outras pessoas usem a biblioteca, conceda permissão de leitura para o projeto do Apps Script.

Para usar a biblioteca, siga estas etapas:

  1. Abra uma planilha Google que tenha dados com linhas duplicadas. Para usar um exemplo, faça uma cópia da planilha Linhas duplicadas de exemplo.
  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 da função, selecione runLibrary.

  10. Clique em Run.

  11. Retorne à planilha para visualizar os dados atualizados sem linhas duplicadas.

Revisar o código

Para revisar o código do Apps Script para esta 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. É possível ler a planilha linha por linha, mas as operações JavaScript são consideravelmente mais rápidas do que se comunicar com outros serviços, como o Planilhas. Quanto menos chamadas você fizer, mais rápido ela vai ser. Isso é importante porque cada execução do script tem um tempo máximo de seis minutos.

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

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

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

A primeira repetição for é iterada em cada linha na matriz bidimensional data. Para cada linha, a segunda repetição testa se outra linha com dados correspondentes já existe na matriz newData. Se não for uma cópia, a linha é enviada para a matriz newData.

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

Por fim, o script exclui o conteúdo existente da página 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. Veja abaixo uma modificação opcional.

Remover linhas com dados correspondentes em algumas colunas

Em vez de remover linhas que correspondam totalmente, você pode remover as linhas com dados correspondentes em apenas uma ou duas colunas. Para fazer isso, altere a instrução condicional.

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

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

Substitua a linha por este 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, especialista em Google Developers. Siga Romain no Twitter @romain_vialard (em inglês).

Esta amostra é mantida pelo Google com a ajuda de especialistas do Google Developers.

Próximas etapas