1
resposta

[Dúvida] Não consegui realizar da mesma forma como o professor fez

Eu tentei fazer a automação de relatório de vendas do dia anterior mas o meu deu erro, fiz da mesma maneira que o professor e não consegui de nenhuma maneira, se alguem puder me ajudar, obrigado!!!

// Obter a data de hoje e a data de ontem
const hoje = new Date();
const ontem = new Date(hoje);
ontem.setDate(hoje.getDate() - 1);

// Formatar a data de ontem para o formato YYYY-MM-DD
const ano = ontem.getFullYear();
const mes = String(ontem.getMonth() + 1).padStart(2, '0');
const dia = String(ontem.getDate()).padStart(2, '0');
const dataOntemFormatada = ${ano}-${mes}-${dia};
// Filtrar as vendas de ontem
const vendasDeOntem = items.filter(item => {
// Supondo que a data da venda esteja no formato 'YYYY-MM-DD HH:mm:ss'
const dataVenda = new Date(item.json.Data);
const dataVendaFormatada = ${dataVenda.getFullYear()}-${String(dataVenda.getMonth() + 1).padStart(2, '0')}-${String(dataVenda.getDate()).padStart(2, '0')};
return dataVendaFormatada === dataOntemFormatada;
});
// Calcular o total das vendas de ontem
let totalVendas = 0;
vendasDeOntem.forEach(item => {
totalVendas += parseFloat(item.json.Valor);
});
// Criar o corpo do e-mail em HTML
let emailBody = `

Relatório de Vendas - ${dataOntemFormatada}

ProdutoValorData
`;

vendasDeOntem.forEach(item => {
const dataVenda = new Date(item.json.Data);
const dataVendaFormatada = ${dataVenda.getDate().toString().padStart(2, '0')}/${(dataVenda.getMonth() + 1).toString().padStart(2, '0')}/${dataVenda.getFullYear()};
emailBody += <tr> <td>${item.json.Produto}</td> <td>R$ ${parseFloat(item.json.Valor).toFixed(2)}</td> <td>${dataVendaFormatada}</td> </tr> ;
});

emailBody += `

Total das Vendas: R$ ${totalVendas.toFixed(2)}

`;

return [{
json: {
bodyHTML: emailBody
}
}];

Print do email abaixo:
Email com erro

O codigo que coloquei, igual o do video

E por fim meu workflow
Workflow

1 resposta

Bom dia, Nicolas! Tudo certo?

O problema está relacionado ao acesso às propriedades do objeto item.json. Quando vemos "undefined" e "NaN", geralmente significa que o código não está conseguindo acessar corretamente os dados que deveriam estar no objeto.

Aqui estão algumas coisas que você pode verificar:

  1. Estrutura dos dados: certifique-se de que os dados que você está recebendo no items realmente têm as propriedades Data, Produto e Valor. Você pode fazer isso imprimindo o objeto item.json no console para ver sua estrutura.

  2. Formato da data: verifique se a data no seu objeto item.json está realmente no formato esperado 'YYYY-MM-DD HH:mm:ss'. Se não estiver, o new Date(item.json.Data) pode não estar funcionando corretamente.

  3. Verificação de propriedades: antes de acessar item.json.Produto e item.json.Valor, verifique se essas propriedades realmente existem:

    console.log(item.json);
    
  4. Tratamento de erros: adicione verificações para garantir que os valores não sejam undefined antes de usá-los:

    const produto = item.json.Produto || 'Produto não especificado';
    const valor = parseFloat(item.json.Valor) || 0;
    

Espero que essas dicas ajudem a resolver o problema! Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.