Receber acesso gratis Inicio
Google Apps Script

Parcelamento Automático no Google Sheets

Um script completo para dividir transações em parcelas na sua aba "CAIXA". Ele calcula as datas de vencimento e gera as novas linhas automaticamente, evitando trabalho manual e erros de digitação.

Download Grátis

Baixe agora mesmo para ter acesso ao pacote completo e desbloquear o código-fonte da automação.

Aba: CAIXA
Registro Original inserido
Compra de Equipamentos A Parcelar (3x)
Linhas geradas automaticamente
Compra de Equipamentos ID: COMPRA-1
Parcela 1 de 3
Compra de Equipamentos ID: COMPRA-2
Parcela 2 de 3
Compra de Equipamentos ID: COMPRA-3
Parcela 3 de 3

Observações Importantes sobre as Colunas

O código funciona baseado na posição das colunas (índices) da sua planilha. Isso significa que, se a posição de alguma coluna for alterada, será necessário ajustar os índices correspondentes no script para que ele continue funcionando corretamente.

Exemplo prático:

Se uma nova coluna for adicionada no seu sistema (ex: entre as colunas P e Q), todas as colunas que estavam depois dela terão seus índices deslocados.

Isso afetará diretamente os índices do número de parcelas, do status "parcelado" (atualmente coluna Z) e das colunas que armazenam as datas das parcelas 2 a 5. Como resultado, o código não funcionará corretamente até que os índices sejam atualizados.

Como ajustar os índices?

Antes de modificar a estrutura da planilha, verifique quais índices serão alterados para atualizar o código. Os índices são sempre indicados no código como data[i][n], onde "n" representa a posição da coluna (Lembrando que no JavaScript, a contagem inicia no 0. A coluna A é 0, a B é 1, etc).

data[i][10] // Esse número 10 representa a 11ª coluna no Google Sheets

Se uma nova coluna for adicionada antes dessa posição, esse número precisará ser ajustado para refletir a nova posição.

Prévia do Código

Confira um trecho da estrutura abaixo. Cadastre-se gratuitamente para desbloquear o código-fonte completo.

AdicionarParcelas.gs

Passo Obrigatório:

Após colar o código, vá em "Acionadores" (ícone de relógio), crie um novo e selecione a opção: Ao alterar (ou On Edit).

/**
 * Função que adiciona parcelas automaticamente na aba "CAIXA"
 *
 * Esta função verifica as linhas da planilha para encontrar transações que ainda não foram parceladas.
 * Dependendo do tipo de parcelamento, os valores das parcelas são calculados e inseridos automaticamente.
 */

function AdicionarParcelas() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CAIXA");
  if (!sheet) return;

  var lastRow = sheet.getLastRow();
  if (lastRow < 2) return;

  // Pega a matriz até a última coluna preenchida
  var data = sheet.getRange(1, 1, lastRow, sheet.getLastColumn()).getValues();
  var linhasAdicionadas = 0; 

  for (var i = 0; i < data.length; i++) {
    var statusParcelamento = data[i][25];
    var tipoPagamento = data[i][12];

    if (statusParcelamento === "parcelado") continue;

    var numParcelas = parseInt(data[i][19]);
    var dataReferencia = new Date(data[i][1]);
    
    // [ CÓDIGO OCULTO: Lógica de geração de dias e inserção de novas linhas ]
    // Faça o download gratuito para acessar as mais de 50 linhas com o coração da automação.
    
    var rowData = data[i];
    var diasParcelas = [];
    
    /* ...
      Restante do código protegido.
      ...
    */
  }
}

Código Protegido

A lógica completa de cálculo e inserção de linhas foi ocultada nesta prévia. Cadastre-se para baixar o script completo e 100% funcional.

Quero o Código Completo

Entenda a Lógica do Script

Desenvolvemos uma estrutura avançada e à prova de falhas. Abaixo você confere o raio-X de como o código gera suas parcelas de forma inteligente, validando as informações antes de gravar.

1. Função Principal: AdicionarParcelas()

Esta é a função mestre que roda no Google Apps Script. O objetivo dela é varrer a sua planilha e agir silenciosamente em segundo plano, identificando novas transações de venda ou compra que precisam ser divididas em parcelas no seu fluxo de caixa.

2. Conexão e Leitura em Bloco (Alta Performance)

O código se conecta ativamente à aba escolhida:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CAIXA");

Para evitar travamentos (tempo de execução), nós não lemos a planilha célula por célula. O código usa getRange().getValues() para extrair a matriz inteira de uma só vez para a memória.

3. O Laço de Repetição (Loop For)

A mágica começa aqui. A automação usa um comando for (var i = 0; i < data.length; i++) para olhar cada linha existente, da primeira até a última. É neste laço que ela decide se a linha merece ou não virar uma parcela.

4. O "Freio" de Segurança

Se o código apenas fizesse parcelas indefinidamente, ele duplicaria registros que já foram processados. Para isso existe o freio:

if (statusParcelamento === "parcelado") continue;

Se a linha atual já possuir a etiqueta "parcelado" gravada na coluna 25 (Status), o comando continue ordena que o código pule esta linha e passe para a próxima imediatamente.

5. Identificação do Tipo de Pagamento

A lógica se bifurca baseada no tipo de lançamento. Criamos duas inteligências:

  • Parcelado 1: Lê intervalos de dias quebrados inseridos manualmente em colunas específicas da matriz.
  • Parcelado 2: Adiciona parcelas redondas, injetando múltiplos de 30 dias na data inicial para cada parcela solicitada.

6. Validação de Estrutura

Para impedir que a planilha quebre se algum dado for esquecido pelo usuário:

if (diasParcelas.length === 0) continue;

Garante que, se não houver dias válidos configurados (o vetor estiver vazio), o processo é abortado para aquela linha.

7. Atualização do Registro Original (Matriz)

Antes de injetar as novas linhas, o script altera a linha-mãe.

sheet.getRange(i + 1, 26).setValue("parcelado");
sheet.getRange(i + 1, 25).setValue("Parcela 1 de " + numParcelas);

A compra/venda principal deixa de ser um lançamento genérico e passa a ser rotulada ativamente como "Parcela 1", ativando o nosso "Freio" (etapa 4) para a próxima vez que o código rodar.

8. O Loop Interno de Parcelas e Clonagem

Um segundo laço for começa a atuar para gerar exatamente as X parcelas solicitadas. É aqui que entra a clonagem inteligente da linha:

var novaLinha = rowData.slice();

A função slice() cria uma cópia idêntica da linha original, transportando todos os nomes, valores e identificadores, mas nos permitindo editar apenas os dados temporais.

9. Motor de Datas e Limpeza

Dentro do loop da nova linha, o código soma os dias definidos e recálcula o Vencimento em formato Brasileiro (dd/MM/yyyy).

novaLinha[11] = "";
novaLinha[14] = "";

Ele também anula campos de anexos ou observações da parcela-mãe que não devem se repetir nas filhas, mantendo o financeiro perfeitamente organizado.

10. Injeção Sequencial no Sheets

Finalmente, o Google Sheets recebe o comando físico para inserir linhas reais e escrever os dados copiados:

sheet.insertRowAfter(i + 1 + linhasAdicionadas);
sheet.getRange(...).setValues([novaLinha]);

A variável linhasAdicionadas garante que as parcelas entrem na ordem exata e logo abaixo da transação que lhes deu origem.

Incrível a quantidade de lógica envolvida para economizar horas de trabalho manual, não é mesmo?

Baixar o Script Completo Agora