Recuperando e enviando arquivos Excel via n8n para um servidor SFTP

Descreva o problema/erro/pergunta

Olá a todos, criamos um fluxo de trabalho para um voicebot no n8n. Este voicebot foi projetado para registrar as horas de trabalho dos funcionários que chamam o voicebot para enviar seus horários. Para garantir que os horários sejam importados em nosso sistema, o fluxo de trabalho precisa funcionar com um arquivo Excel contendo três planilhas. Os horários registrados devem ser armazenados em um servidor SFTP, e uma nova versão do arquivo Excel também deve ser recuperada do servidor SFTP diariamente. É possível conseguir isso via n8n? Agradeço qualquer feedback. Obrigado antecipadamente. Atenciosamente, Lars
Traduzido com DeepL.com (versão gratuita)

Qual é a mensagem de erro (se houver)?

Por favor, compartilhe seu fluxo de trabalho

(Selecione os nós em sua tela e use os atalhos de teclado CMD+C/CTRL+C e CMD+V/CTRL+V para copiar e colar o fluxo de trabalho.)

Compartilhe a saída retornada pelo último nó

Informações sobre sua configuração do n8n

  • Versão do n8n:
  • Banco de dados (padrão: SQLite):
  • Configuração EXECUTIONS_PROCESS do n8n (padrão: own, main):
  • Executando n8n via (Docker, npm, n8n cloud, aplicativo de desktop):
  • Sistema operacional:

Olá :waving_hand: @Lars_Kruger

Você pode tentar isso como um exemplo

Sinta-se livre para modificar de acordo com seu caso de uso

Bem-vindo ao n8n, @Lars_Kruger! Sim, isso é absolutamente viável com n8n, e é um caso de uso prático e interessante.

Algumas observações importantes especificamente sobre a parte Excel / múltiplas planilhas:

O nó Read/Write Files from Disk (ou o download do nó SFTP) fornecerá o arquivo Excel como binário. Para realmente ler ou modificar planilhas individuais, você vai querer usar o nó Spreadsheet File (na categoria “Files”). Ele permite que você especifique qual planilha ler. Porém, escrever de volta em uma pasta de trabalho com múltiplas planilhas é mais complicado: o nó nativo do n8n cria um novo arquivo, então você não consegue diretamente “atualizar uma planilha e manter as outras duas intactas” sem alguns passos extras.

Um padrão prático que funciona bem:

  1. Nó SFTP Download: obtenha o arquivo Excel atual do servidor
  2. Nó Spreadsheet File (Read): extraia dados de cada planilha de que você precisa
  3. Sua lógica de processamento (mescle novos dados do voicebot na planilha certa)
  4. Nó Spreadsheet File (Write): crie o arquivo atualizado com as três planilhas combinadas
  5. Nó SFTP Upload: envie o arquivo atualizado de volta

Para combinar múltiplas planilhas em uma única operação de escrita, você precisará de um nó Code com a biblioteca xlsx (já disponível no n8n) para construir adequadamente uma pasta de trabalho com múltiplas planilhas.

Sua dúvida principal é sobre a parte SFTP, o tratamento do Excel, ou ambas? Fico feliz em aprofundar em qualquer parte que não esteja clara!

@nguyenthieutoan Obrigado pelo seu feedback. Como não tenho experiência com automação, estou procurando um profissional que possa me apoiar nesse processo. Procuro um workflow para o seguinte cenário:

  1. O chamador liga para o voicebot
  2. O voicebot solicita um número de entregador e um número de distrito para legitimizar o chamador.
  3. O chamador informa seu número de entregador → O bot transmite os dados para n8n para verificar se o número de entregador existe na planilha 1.
  4. n8n retorna a mensagem → Entregador encontrado ou não encontrado
  5. Se o resultado for positivo, o bot solicita o número do distrito para o qual o chamador deseja informar os horários.
  6. O chamador informa o número do distrito → O bot transmite os dados para n8n para verificar se este número de distrito está atribuído ao número de entregador. (Pode haver vários números de distrito para um número de entregador)
  7. n8n retorna a mensagem informando se os números de distrito estão atribuídos ao número de entregador.
  8. Se o resultado for positivo, o bot solicita os horários que o chamador deseja informar para o distrito.
  9. O chamador informa os horários ao bot (Ex. 1,5 horas ou 90 minutos, etc.)
  10. O bot envia esses dados para n8n.
  11. n8n verifica na planilha 2 se os horários correspondem ao tempo previsto para este número de distrito
  12. Se o resultado for positivo, o bot pergunta se deseja informar mais horários.
  13. Se sim = continuar com a etapa 5
  14. Se não = O bot pergunta o motivo da divergência em relação ao tempo previsto
  15. O chamador informa a justificativa (Mau tempo ou jornal entregue atrasado, etc.)
  16. O bot envia esses dados para n8n
  17. n8n armazena os dados coletados em um arquivo separado (Excel = csv ou xlsx) com as seguintes colunas: Data | Número do Colaborador | Distrito | Nome | Minutos | Horas | Tipo de Remuneração | Justificativa
  18. Este arquivo é armazenado diariamente no servidor SFTP em um horário específico.
  19. Também é gerado diariamente um novo arquivo com número de distrito, números de entregador, horários, etc. O n8n também deve recuperar este arquivo do servidor SFTP todas as manhãs.

Resumo:

  • Sincronização diária de dados mestres via SFTP (Cron 05:00)
  • Validação número de entregador + distrito contra planilha 1
  • Armazenamento dos horários em arquivo de saída atualizado diariamente no SFTP (incluindo coluna de distrito)
  • Verificação de plausibilidade: Divergência > 40% do tempo previsto → Bot é solicitado a fazer pergunta de justificativa
  • Proteção contra duplicatas em entregador + distrito + data: um entregador pode informar vários distritos por dia, mas não pode informar o mesmo distrito duas vezes
  • O tempo previsto é específico do dia da semana e das condições (REGULAR vs. TEMPORÁRIO)
  • Colunas do arquivo de saída (Planilha NZ Zusteller Import Dialog):
    Data | Número do Colaborador | Distrito | Nome | Minutos | Horas | Tipo de Remuneração | Justificativa

Você pode me ajudar nesse projeto ou me indicar alguém que possa implementar algo assim? Posso oferecer remuneração também.

Atenciosamente,
Lars

Por favor, poste isso na categoria job

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.