Pular para conteúdo

AIRTABLE BATCH CREATE - Criar Múltiplos Registros no Airtable

O que é este Node?

O AIRTABLE BATCH CREATE é o node responsável por criar múltiplos registros de uma só vez no Airtable de forma eficiente.

Por que este Node existe?

Criar múltiplos registros individualmente é lento e ineficiente. O AIRTABLE BATCH CREATE existe para:

  1. Performance: Criar vários registros em uma única requisição API
  2. Importação em Massa: Importar listas de dados de uma vez
  3. Eficiência: Reduzir número de chamadas à API do Airtable
  4. Processamento em Lote: Criar múltiplos registros resultantes de um processo

Como funciona internamente?

Quando o AIRTABLE BATCH CREATE é executado, o sistema:

  1. Coleta Credenciais: Obtém API Key, Base ID e nome da tabela
  2. Prepara Array: Processa array de registros, substituindo variáveis
  3. Formata Dados: Converte cada item em formato { fields: {...} }
  4. Faz Requisição POST: Envia todos os registros em batch
  5. Se falha: Lança erro (limite excedido ou dados inválidos)
  6. Se sucesso: Armazena array com todos os registros criados (com IDs)
  7. Continua Execução: Passa para próximo node com resultados

Código interno (airtable.executor.ts:72-77):

case 'batchCreate': {
  const records = JSON.parse(this.replaceVariables(JSON.stringify(node.data.records), context.variables));
  const response = await axios.post(baseUrl, { records: records.map((r: any) => ({ fields: r })) }, { headers });
  result = response.data;
  break;
}

Quando você DEVE usar este Node?

Use AIRTABLE BATCH CREATE sempre que precisar de criar múltiplos registros:

Casos de uso

  1. Importação de Lista: "Criar múltiplos leads de uma lista fornecida"
  2. Processamento em Lote: "Após processar pedidos, criar vários registros de log"
  3. Carga Inicial: "Popular tabela com dados iniciais"
  4. Sincronização: "Importar registros de outra fonte em lote"

Quando NÃO usar AIRTABLE BATCH CREATE

  • Um único registro: Use AIRTABLE CREATE ao invés
  • Mais de 10 registros: API do Airtable limita a 10 por requisição

Parâmetros

Campo Tipo Obrigatório Descrição
operation string Sim Deve ser "batchCreate"
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
records array Sim Array de objetos com campos (máx 10 registros)
responseVariable string Não Nome da variável de resposta (padrão: "airtableResult")

Exemplo 1: Importar Lista de Leads

Objetivo: Criar múltiplos leads de uma vez

JSON para Importar

{
  "name": "Importar Leads em Lote",
  "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 Lista",
        "parameters": {
          "name": "listaLeads",
          "value": "[{\"Nome\": \"João Silva\", \"Email\": \"joao@exemplo.com\"}, {\"Nome\": \"Maria Santos\", \"Email\": \"maria@exemplo.com\"}, {\"Nome\": \"Pedro Costa\", \"Email\": \"pedro@exemplo.com\"}]"
        }
      }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Criar Leads em Lote",
        "operation": "batchCreate",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Leads"
        },
        "records": "{{listaLeads}}",
        "responseVariable": "leadsCriados"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "✅ {{leadsCriados.records.length}} leads criados com sucesso!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: ✅ 3 leads criados com sucesso!

Exemplo 2: Criar Registros de Atividades

Objetivo: Registrar múltiplas atividades após processo

JSON para Importar

{
  "name": "Registrar Atividades em Lote",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "airtable_1",
      "type": "airtable",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Criar Logs",
        "operation": "batchCreate",
        "config": {
          "apiKey": "patABC123456789xyz",
          "baseId": "appXYZ123456",
          "tableName": "Atividades"
        },
        "records": [
          {
            "Tipo": "Login",
            "Usuario": "{{nomeUsuario}}",
            "Data": "{{agora}}",
            "Status": "Sucesso"
          },
          {
            "Tipo": "Visualizacao",
            "Usuario": "{{nomeUsuario}}",
            "Data": "{{agora}}",
            "Pagina": "Dashboard"
          },
          {
            "Tipo": "Acao",
            "Usuario": "{{nomeUsuario}}",
            "Data": "{{agora}}",
            "Descricao": "Exportou relatório"
          }
        ],
        "responseVariable": "atividadesCriadas"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Atividades registradas!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 550, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "airtable_1" },
    { "source": "airtable_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Atividades registradas!

Resposta do Node

{
  "records": [
    {
      "id": "recABC123",
      "createdTime": "2025-01-15T10:00:00.000Z",
      "fields": {
        "Nome": "João Silva",
        "Email": "joao@exemplo.com"
      }
    },
    {
      "id": "recDEF456",
      "createdTime": "2025-01-15T10:00:00.000Z",
      "fields": {
        "Nome": "Maria Santos",
        "Email": "maria@exemplo.com"
      }
    }
  ]
}

Boas Práticas

SIM:

  • Limite a 10 registros por batch (limite da API Airtable)
  • Use variáveis dinâmicas nos campos dos registros
  • Valide dados antes de criar em lote
  • Trate erros - um registro inválido falha todo o batch

NÃO:

  • Não tente criar mais de 10 registros por vez
  • Não use BATCH CREATE para 1 registro (use CREATE normal)
  • Não esqueça de validar array de registros antes

Dicas

💡 Dica 1: API do Airtable limita a 10 registros por batch - para mais, use LOOP com BATCH CREATE

💡 Dica 2: Formato do array: [{campo1: valor1}, {campo2: valor2}] - cada objeto vira um registro

💡 Dica 3: Todos os registros são criados ou nenhum - operação é atômica

💡 Dica 4: Use com VARIABLE ou resultado de outro node que retorne array

Próximo Node

AIRTABLE CREATE - Criar registro único → AIRTABLE BATCH UPDATE - Atualizar múltiplos registros → LOOP - Processar array antes de criar