Pular para conteúdo

AIRTABLE UPDATE - Atualizar Registro no Airtable

O que é este Node?

O AIRTABLE UPDATE é o node responsável por atualizar campos de um registro existente no Airtable usando seu ID único.

Por que este Node existe?

Atualizar registros é fundamental para manter dados sincronizados e refletir mudanças de estado em tempo real. O AIRTABLE UPDATE existe para:

  1. Atualização de Status: Mudar status de pedidos, tickets, leads conforme progresso
  2. Enriquecimento de Dados: Adicionar informações coletadas posteriormente ao registro
  3. Sincronização: Manter dados do Airtable atualizados com informações do fluxo
  4. Gestão de Estado: Controlar ciclo de vida de registros (novo → em andamento → concluído)

Como funciona internamente?

Quando o AIRTABLE UPDATE é executado, o sistema:

  1. Coleta Credenciais: Obtém o API Key, Base ID e nome da tabela
  2. Obtém Record ID: Pega o ID do registro a ser atualizado
  3. Prepara Campos: Processa os campos que serão atualizados, substituindo variáveis
  4. Monta URL da API: Constrói https://api.airtable.com/v0/{baseId}/{tableName}/{recordId}
  5. Faz Requisição PATCH: Envia apenas os campos que serão modificados
  6. Se falha: Lança erro (registro não existe ou campos inválidos)
  7. Se sucesso: Armazena o registro atualizado na variável de resposta
  8. Continua Execução: Passa para o próximo node com resultado disponível

Código interno (airtable.executor.ts:40-46):

case 'update': {
  const recordId = this.replaceVariables(node.data.recordId, context.variables);
  const fields = JSON.parse(this.replaceVariables(JSON.stringify(node.data.fields), context.variables));
  const response = await axios.patch(`${baseUrl}/${recordId}`, { fields }, { headers });
  result = response.data;
  break;
}

Quando você DEVE usar este Node?

Use AIRTABLE UPDATE sempre que precisar de modificar registro existente:

Casos de uso

  1. Atualizar Status de Pedido: "Quando pagamento confirmado, mudar status para 'Pago'"
  2. Registrar Interação: "Adicionar data/hora do último contato com lead"
  3. Completar Dados: "Após coleta adicional, preencher campos faltantes"
  4. Marcar Conclusão: "Quando tarefa finalizada, atualizar status e data de conclusão"
  5. Incrementar Contadores: "Aumentar número de tentativas de contato"

Quando NÃO usar AIRTABLE UPDATE

  • Criar novo registro: Use AIRTABLE CREATE ao invés
  • Atualizar múltiplos registros: Use AIRTABLE BATCH UPDATE ao invés
  • Não sabe o ID: Use AIRTABLE SEARCH para encontrar primeiro

Parâmetros Detalhados

config.apiKey (string, obrigatório)

O que é: Token de autenticação da API do Airtable. Obtido em https://airtable.com/account

Padrão: Não há padrão (obrigatório)

Flow completo para testar:

{
  "name": "Teste Airtable Update - API Key",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Atualizar Lead",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Leads"
        },
        "recordId": "recABC123XYZ456",
        "fields": {
          "Status": "Contatado"
        },
        "responseVariable": "leadAtualizado"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Lead atualizado com sucesso!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Inicie o fluxo. O sistema atualizará o status do lead.

config.baseId (string, obrigatório)

O que é: Identificador da base do Airtable. Encontrado na URL da base (app......)

Padrão: Não há padrão (obrigatório)

Flow completo para testar:

{
  "name": "Teste Airtable Update - Base ID",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Atualizar em Base Específica",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Clientes"
        },
        "recordId": "recCLIENTE789",
        "fields": {
          "UltimoAcesso": "{{hoje}}"
        },
        "responseVariable": "clienteAtualizado"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Cliente atualizado na base!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Inicie o fluxo. O sistema atualizará registro na base especificada.

config.tableName (string, obrigatório)

O que é: Nome exato da tabela no Airtable onde o registro será atualizado.

Padrão: Não há padrão (obrigatório)

Flow completo para testar:

{
  "name": "Teste Airtable Update - Table Name",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Atualizar na Tabela Vendas",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Vendas"
        },
        "recordId": "recVENDA123",
        "fields": {
          "Status": "Enviado",
          "CodigoRastreio": "BR123456789"
        },
        "responseVariable": "vendaAtualizada"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Venda atualizada na tabela!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Inicie o fluxo. O sistema atualizará registro na tabela especificada.

recordId (string, obrigatório)

O que é: ID único do registro no Airtable a ser atualizado (começa com "rec"). Aceita variáveis.

Padrão: Não há padrão (obrigatório)

Flow completo para testar:

{
  "name": "Teste Airtable Update - Record ID Dinâmico",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Solicitar ID",
        "parameters": {
          "message": "Digite o ID do pedido para marcar como pago:",
          "variable": "idPedido"
        }
      }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Atualizar Status",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Pedidos"
        },
        "recordId": "{{idPedido}}",
        "fields": {
          "Status": "Pago",
          "DataPagamento": "{{hoje}}"
        },
        "responseVariable": "pedidoAtualizado"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Pedido #{{idPedido}} marcado como pago!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite um ID de pedido. O sistema atualizará o status para "Pago".

fields (object, obrigatório)

O que é: Objeto JSON com os campos a serem atualizados. Apenas campos incluídos serão modificados.

Padrão: Não há padrão (obrigatório)

Flow completo para testar:

{
  "name": "Teste Airtable Update - Fields Dinâmicos",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Definir ID",
        "parameters": {
          "name": "idTicket",
          "value": "recTICKET789"
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Solução",
        "parameters": {
          "message": "Digite a solução aplicada:",
          "variable": "solucao"
        }
      }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Resolver Ticket",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Tickets"
        },
        "recordId": "{{idTicket}}",
        "fields": {
          "Status": "Resolvido",
          "Solucao": "{{solucao}}",
          "DataResolucao": "{{hoje}}",
          "Responsavel": "Sistema"
        },
        "responseVariable": "ticketResolvido"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Ticket resolvido com sucesso!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 850, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "input_1" },
    { "source": "input_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite uma solução. O sistema atualizará múltiplos campos do ticket.

responseVariable (string, opcional)

O que é: Nome da variável onde o resultado da atualização será armazenado.

Padrão: "airtableResult"

Flow completo para testar:

{
  "name": "Teste Airtable Update - Response Variable",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Atualizar e Guardar",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Contatos"
        },
        "recordId": "recCONTATO123",
        "fields": {
          "UltimaInteracao": "{{hoje}}",
          "TotalInteracoes": 5
        },
        "responseVariable": "contatoAtualizado"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Mostrar Resultado",
        "parameters": {
          "message": "Contato atualizado!\n\nID: {{contatoAtualizado.id}}\nTotal de interações: {{contatoAtualizado.fields.TotalInteracoes}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Inicie o fluxo. O sistema atualizará e mostrará campos na variável customizada.

Parâmetros

Campo Tipo Obrigatório Descrição
operation string Sim Deve ser "update"
config.apiKey string Sim Token de autenticação do Airtable
config.baseId string Sim ID da base do Airtable
config.tableName string Sim Nome da tabela
recordId string Sim ID do registro a atualizar (aceita variáveis)
fields object Sim Campos a serem atualizados (apenas os especificados)
responseVariable string Não Nome da variável de resposta (padrão: "airtableResult")

Exemplo 1: Atualizar Status de Pedido Após Pagamento

Objetivo: Quando pagamento confirmado, atualizar status do pedido no Airtable

JSON para Importar

{
  "name": "Atualizar Status de Pedido",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Pagamento",
        "parameters": {
          "message": "Processando pagamento..."
        }
      }
    },
    {
      "id": "delay_1",
      "type": "delay",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Aguardar",
        "parameters": {
          "delay": 2000
        }
      }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Simular Pagamento OK",
        "parameters": {
          "name": "pagamentoAprovado",
          "value": "true"
        }
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Verificar Pagamento",
        "parameters": {
          "condition": "{{pagamentoAprovado}} == 'true'"
        }
      }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 850, "y": 50 },
      "data": {
        "label": "Atualizar Pedido",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Pedidos"
        },
        "recordId": "{{idPedidoAtual}}",
        "fields": {
          "Status": "Pago",
          "DataPagamento": "{{hoje}}",
          "MetodoPagamento": "Pix",
          "ValorPago": "{{valorTotal}}"
        },
        "responseVariable": "pedidoAtualizado"
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 1000, "y": 50 },
      "data": {
        "label": "Sucesso",
        "parameters": {
          "message": "✅ Pagamento aprovado!\n\nSeu pedido #{{idPedidoAtual}} foi confirmado e está sendo preparado."
        }
      }
    },
    {
      "id": "message_3",
      "type": "message",
      "position": { "x": 850, "y": 150 },
      "data": {
        "label": "Falha",
        "parameters": {
          "message": "❌ Pagamento não foi aprovado. Tente novamente."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1150, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "delay_1" },
    { "source": "delay_1", "target": "variable_1" },
    { "source": "variable_1", "target": "condition_1" },
    { "source": "condition_1", "target": "airtable_1", "label": "true" },
    { "source": "condition_1", "target": "message_3", "label": "false" },
    { "source": "airtable_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" },
    { "source": "message_3", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Processando pagamento...
[aguarda 2 segundos]
Sistema: ✅ Pagamento aprovado!

Seu pedido #recPEDIDO123 foi confirmado e está sendo preparado.

Exemplo 2: Registrar Última Interação com Lead

Objetivo: Sempre que conversar com lead, atualizar data/hora da última interação

JSON para Importar

{
  "name": "Registrar Interação com Lead",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Saudação",
        "parameters": {
          "message": "Olá! Como posso ajudar?"
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Conversa",
        "parameters": {
          "message": "",
          "variable": "mensagemUsuario"
        }
      }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Registrar Interação",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Leads"
        },
        "recordId": "{{idLeadAtual}}",
        "fields": {
          "UltimaInteracao": "{{agora}}",
          "UltimaMensagem": "{{mensagemUsuario}}",
          "TotalInteracoes": "{{totalInteracoes + 1}}",
          "StatusEngajamento": "Ativo"
        },
        "responseVariable": "leadAtualizado"
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Resposta",
        "parameters": {
          "message": "Obrigado pela sua mensagem! Nossa equipe irá responder em breve."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 850, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "input_1" },
    { "source": "input_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Olá! Como posso ajudar?
Usuário: Quero saber sobre os cursos
Sistema: Obrigado pela sua mensagem! Nossa equipe irá responder em breve.

Exemplo 3: Workflow de Ticket de Suporte

Objetivo: Atualizar ticket conforme progresso do atendimento

JSON para Importar

{
  "name": "Workflow de Ticket",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "ID Ticket",
        "parameters": {
          "message": "Digite o ID do ticket:",
          "variable": "idTicket"
        }
      }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Marcar Em Análise",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Tickets"
        },
        "recordId": "{{idTicket}}",
        "fields": {
          "Status": "Em Análise",
          "DataInicioAnalise": "{{agora}}",
          "Responsavel": "Sistema"
        },
        "responseVariable": "ticket"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Notificar",
        "parameters": {
          "message": "Ticket #{{idTicket}} está em análise..."
        }
      }
    },
    {
      "id": "delay_1",
      "type": "delay",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Simular Análise",
        "parameters": {
          "delay": 3000
        }
      }
    },
    {
      "id": "input_2",
      "type": "input",
      "position": { "x": 850, "y": 100 },
      "data": {
        "label": "Solução",
        "parameters": {
          "message": "Digite a solução aplicada:",
          "variable": "solucao"
        }
      }
    },
    {
      "id": "airtable_2",
      "type": "airtable",
      "position": { "x": 1000, "y": 100 },
      "data": {
        "label": "Resolver Ticket",
        "operation": "update",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Tickets"
        },
        "recordId": "{{idTicket}}",
        "fields": {
          "Status": "Resolvido",
          "Solucao": "{{solucao}}",
          "DataResolucao": "{{agora}}",
          "TempoResolucao": "{{minutosDecorridos}}"
        },
        "responseVariable": "ticketResolvido"
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 1150, "y": 100 },
      "data": {
        "label": "Finalizar",
        "parameters": {
          "message": "✅ Ticket #{{idTicket}} resolvido!\n\nSolução: {{solucao}}\n\nObrigado pelo contato!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1300, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "delay_1" },
    { "source": "delay_1", "target": "input_2" },
    { "source": "input_2", "target": "airtable_2" },
    { "source": "airtable_2", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Digite o ID do ticket:
Usuário: recTICKET789
Sistema: Ticket #recTICKET789 está em análise...
[aguarda 3 segundos]
Sistema: Digite a solução aplicada:
Usuário: Resetei a senha do usuário
Sistema: ✅ Ticket #recTICKET789 resolvido!

Solução: Resetei a senha do usuário

Obrigado pelo contato!

Resposta do Node

{
  "id": "recABC123XYZ456",
  "createdTime": "2025-01-15T10:30:00.000Z",
  "fields": {
    "Nome": "José Roberto",
    "Email": "jose@exemplo.com",
    "Status": "Contatado",
    "UltimaInteracao": "2025-01-15T14:30:00.000Z",
    "TotalInteracoes": 3
  }
}

Boas Práticas

SIM:

  • Atualize apenas campos necessários (PATCH atualiza parcialmente)
  • Use variáveis dinâmicas para valores que mudam
  • Combine GET + UPDATE para atualização condicional
  • Registre timestamps de ações importantes (DataPagamento, UltimaInteracao, etc)
  • Use UPDATE para incrementar contadores (tentativas, interações, etc)

NÃO:

  • Não envie todos os campos se só precisa atualizar um
  • Não atualize sem verificar se registro existe (use GET antes se incerto)
  • Não use CREATE quando deveria ser UPDATE
  • Não esqueça de atualizar campos de auditoria (data modificação, responsável)

Dicas

💡 Dica 1: Apenas campos especificados em fields são atualizados - outros permanecem inalterados

💡 Dica 2: Use {{hoje}} ou {{agora}} para timestamps automáticos

💡 Dica 3: Combine com CALCULATOR para incrementar contadores: "total": "{{total + 1}}"

💡 Dica 4: Para fluxos complexos, use GET → CONDITION → UPDATE para atualização condicional

💡 Dica 5: O Airtable PATCH é idempotente - pode executar múltiplas vezes com segurança

Próximo Node

AIRTABLE GET - Buscar registro antes de atualizar → AIRTABLE DELETE - Deletar registro → AIRTABLE SEARCH - Buscar registros para atualizar → AIRTABLE BATCH UPDATE - Atualizar múltiplos registros