Pular para conteúdo

SHEETS_SORT - Ordenar Dados do Google Sheets

O que é este Node?

O SHEETS_SORT é o node responsável por ordenar linhas de dados no Google Sheets por uma ou mais colunas, em ordem crescente ou decrescente.

Por que este Node existe?

Ordenar dados facilita análise e apresentação. O SHEETS_SORT existe para:

  1. Organização: Ordenar clientes alfabeticamente
  2. Análise: Classificar vendas do maior para o menor
  3. Priorização: Ordenar por data de vencimento
  4. Relatórios: Apresentar dados em ordem lógica

Como funciona internamente?

Quando o SHEETS_SORT é executado, o sistema:

  1. Autentica: Valida tokens OAuth2
  2. Define critérios: Especifica coluna(s) e ordem (ASC/DESC)
  3. Executa batchUpdate: Chama com requisição sortRange
  4. Reorganiza linhas: Reordena mantendo integridade dos dados
  5. Retorna confirmação: Informa sucesso

Código interno (baseado na API Google Sheets):

case 'sort':
  const sortResult = await sheets.spreadsheets.batchUpdate({
    spreadsheetId: data.spreadsheetId,
    requestBody: {
      requests: [{
        sortRange: {
          range: {
            sheetId: data.sheetId,
            startRowIndex: data.startRow,
            endRowIndex: data.endRow,
            startColumnIndex: data.startColumn,
            endColumnIndex: data.endColumn,
          },
          sortSpecs: [{
            dimensionIndex: data.sortColumn,
            sortOrder: data.sortOrder || 'ASCENDING',  // ou 'DESCENDING'
          }],
        },
      }],
    },
  });

  return {
    success: true,
    message: 'Data sorted successfully',
  };

Quando você DEVE usar este Node?

Use SHEETS_SORT quando precisar reordenar dados automaticamente:

Casos de uso

  1. Ranking: "Ordenar vendedores por total de vendas (maior primeiro)"
  2. Alfabético: "Ordenar lista de clientes por nome A-Z"
  3. Cronológico: "Ordenar pedidos por data (mais recente primeiro)"
  4. Prioridade: "Ordenar tarefas por urgência"

Quando NÃO usar SHEETS_SORT

  • Filtrar dados: Use NODE SHEETS_FILTER
  • Buscar valores: Use NODE SHEETS_READ com lógica externa

Parâmetros

Campo Tipo Obrigatório Descrição
operation string Sim Deve ser "sort"
spreadsheetId string Sim ID da planilha
sheetId number Sim ID da aba
startRow number Sim Linha inicial (base 0)
endRow number Sim Linha final exclusiva
startColumn number Sim Coluna inicial
endColumn number Sim Coluna final exclusiva
sortColumn number Sim Índice da coluna para ordenar (base 0)
sortOrder string Não "ASCENDING" ou "DESCENDING" (padrão: ASCENDING)
accessToken string Sim Token OAuth2
refreshToken string Sim Token OAuth2 refresh

Exemplo 1: Ordenar Vendas por Valor

Objetivo: Classificar vendas da maior para a menor

JSON para Importar

{
  "name": "Ordenar Vendas Decrescente",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "sheets_1",
      "type": "google_sheets",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Ordenar por Valor",
        "parameters": {
          "operation": "sort",
          "spreadsheetId": "1Vendas_XYZ",
          "sheetId": 0,
          "startRow": 1,
          "endRow": 100,
          "startColumn": 0,
          "endColumn": 4,
          "sortColumn": 3,
          "sortOrder": "DESCENDING",
          "accessToken": "{{google_access_token}}",
          "refreshToken": "{{google_refresh_token}}"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "✅ Vendas ordenadas por valor (maior→menor)"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "sheets_1" },
    { "source": "sheets_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: ✅ Vendas ordenadas por valor (maior→menor)

Resposta do Node

{
  "success": true,
  "message": "Data sorted successfully"
}

Boas Práticas

SIM: - Exclua linha de cabeçalho do range (startRow = 1) - Use DESCENDING para rankings (maior primeiro) - Defina range completo para manter integridade

NÃO: - Não inclua cabeçalho no range de ordenação - Não ordene sem definir range completo (pode quebrar dados)

Dicas

💡 Dica 1: startRow=1 exclui cabeçalho (linha 0). Sempre preserve o cabeçalho.

💡 Dica 2: sortColumn usa índice base 0. Coluna A=0, B=1, C=2, etc.

Próximo Node

SHEETS_FILTER - Filtrar dados → SHEETS_READ - Ler dados ordenados