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:
- Organização: Ordenar clientes alfabeticamente
- Análise: Classificar vendas do maior para o menor
- Priorização: Ordenar por data de vencimento
- Relatórios: Apresentar dados em ordem lógica
Como funciona internamente?
Quando o SHEETS_SORT é executado, o sistema:
- Autentica: Valida tokens OAuth2
- Define critérios: Especifica coluna(s) e ordem (ASC/DESC)
- Executa batchUpdate: Chama com requisição sortRange
- Reorganiza linhas: Reordena mantendo integridade dos dados
- 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
- Ranking: "Ordenar vendedores por total de vendas (maior primeiro)"
- Alfabético: "Ordenar lista de clientes por nome A-Z"
- Cronológico: "Ordenar pedidos por data (mais recente primeiro)"
- 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