Workflow n8n

Automatisation Baserow avec n8n : mise à jour des actions boursières

Ce workflow n8n a pour objectif d'automatiser la mise à jour des informations boursières dans Baserow en récupérant des données depuis une page de stock Tradegate. Dans un contexte où les entreprises doivent suivre les fluctuations des marchés financiers en temps réel, ce processus permet de gagner un temps précieux et d'éviter les erreurs manuelles. Les utilisateurs peuvent ainsi se concentrer sur l'analyse des données plutôt que sur leur collecte. Le workflow commence par un déclencheur Cron qui exécute le processus à des intervalles réguliers. Ensuite, il interroge la base de données Baserow pour récupérer les informations nécessaires. Après cela, une requête HTTP est envoyée pour obtenir la page de stock de Tradegate. Les données de cette page sont ensuite extraites grâce à un noeud HTML Extract, qui permet de récupérer les informations pertinentes. Ces données sont ensuite formatées et traitées pour calculer les variations de prix. Enfin, les résultats sont envoyés par email via SendGrid, garantissant que les utilisateurs reçoivent des mises à jour en temps réel. Ce workflow offre une solution efficace pour les entreprises qui souhaitent automatiser le suivi des actions boursières, réduisant ainsi le risque d'erreurs et améliorant la réactivité face aux fluctuations du marché.

Tags clés :automatisationBaserowenvoi d'emailsn8ndonnées financières
Catégorie: Scheduled · Tags: automatisation, Baserow, envoi d'emails, n8n, données financières0

Workflow n8n Baserow, envoi d'emails, données financières : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n Baserow, envoi d'emails, données financières : détail des nœuds

  • On clicking 'execute'

    Ce noeud déclenche manuellement l'exécution du workflow lorsque l'utilisateur clique sur 'exécuter'.

  • Cron

    Ce noeud déclenche le workflow à des intervalles réguliers définis par une expression cron.

  • Baserow

    Ce noeud interagit avec Baserow pour récupérer ou manipuler des données dans une table spécifique.

  • Fetch tradegate stock page

    Ce noeud effectue une requête HTTP pour récupérer la page des actions de Tradegate.

  • Parse tradegate stock page

    Ce noeud extrait des données spécifiques de la page HTML récupérée de Tradegate.

  • Build HTML

    Ce noeud construit du code HTML à partir des données traitées précédemment.

  • Format result

    Ce noeud formate les résultats en définissant des valeurs spécifiques à conserver.

  • Calculate change

    Ce noeud calcule les changements basés sur les valeurs fournies.

  • SendGrid

    Ce noeud envoie un email via SendGrid avec les informations spécifiées.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "id": "70a44436-4b51-458a-ae93-60edeed170de",
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        240,
        300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d4c2dfa2-30bb-4f06-96c2-5811472302d2",
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        240,
        100
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "custom",
              "cronExpression": "15 7 * * 1-6"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "86924546-e4f2-4795-8e80-9e49626d2c42",
      "name": "Baserow",
      "type": "n8n-nodes-base.baserow",
      "position": [
        460,
        200
      ],
      "parameters": {
        "tableId": 680,
        "databaseId": 146,
        "additionalOptions": {}
      },
      "credentials": {
        "baserowApi": {
          "id": "37",
          "name": "Baserow account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "36f2947b-67cf-47eb-891f-e7e3b5ba9eac",
      "name": "Fetch tradegate stock page",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        680,
        200
      ],
      "parameters": {
        "url": "https://www.tradegate.de/orderbuch.php",
        "options": {},
        "responseFormat": "string",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "isin",
              "value": "={{$json[\"ISIN\"]}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b516e751-d1d1-43a0-8f19-6787a5c56ddc",
      "name": "Parse tradegate stock page",
      "type": "n8n-nodes-base.htmlExtract",
      "position": [
        900,
        200
      ],
      "parameters": {
        "options": {},
        "extractionValues": {
          "values": [
            {
              "key": "WKN",
              "cssSelector": "#col1_content > table > tbody > tr:nth-child(2) > td:nth-child(1)"
            },
            {
              "key": "ISIN",
              "cssSelector": "#col1_content > table > tbody > tr:nth-child(2) > td:nth-child(3)"
            },
            {
              "key": "Currency",
              "cssSelector": "#col1_content > table > tbody > tr:nth-child(2) > td:nth-child(4)"
            },
            {
              "key": "Name",
              "cssSelector": "#col1_content > h2"
            },
            {
              "key": "Bid",
              "cssSelector": "#bid"
            },
            {
              "key": "Ask",
              "cssSelector": "#ask"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e51556c7-3f3a-4e4d-96e9-942f436422af",
      "name": "Build HTML",
      "type": "n8n-nodes-base.function",
      "position": [
        1560,
        200
      ],
      "parameters": {
        "functionCode": "const columns = Object.keys(items[0].json);\n\n// Define the basic table structure\nlet table_header = `<table style=\"border: 1px solid black; border-collapse: collapse;\"><tr>${columns.map(e => '<th style=\"border: 1px solid black; border-collapse: collapse;\">' + e + '</th>').join('')}</tr>`;\nlet table_content = \"\";\nlet table_footer = '</table>';\n\n// Add content to our table\nfor (item of items) {\n    table_content += '<tr>'\n    for (column of columns) {\n        table_content += `<td style=\\\"border: 1px solid black; border-collapse: collapse;\\\">${item.json[column]}</td>`\n    }\n    table_content += '</tr>'\n}\n\n// Prepare HTML email body\nconst email_html = `<body style=\"font-family: Sans-Serif;\">\n<p>Investments as of ${$now.setZone(\"Europe/Dublin\").setLocale('ie').toFormat('fff')}:</p>\n${table_header}\n${table_content}\n${table_footer}\n<p>Total: ${items.map(e => parseFloat(e.json['Current Value'])).reduce((a, b) => a + b, 0).toFixed(2)}</p>\n<p><small>Workflow #${$workflow.id}</small></p>\n</body>`\n\n\nreturn [{\n    json: {\n        html: email_html\n    }\n}];"
      },
      "typeVersion": 1
    },
    {
      "id": "361bf8f2-298c-4b96-9f21-4f4620f1e9a9",
      "name": "Format result",
      "type": "n8n-nodes-base.set",
      "position": [
        1120,
        200
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "Name",
              "value": "={{ $node[\"Baserow\"].json[\"Name\"] }}"
            },
            {
              "name": "ISIN",
              "value": "={{ $node[\"Baserow\"].json[\"ISIN\"] }}"
            },
            {
              "name": "Count",
              "value": "={{ $node[\"Baserow\"].json[\"Count\"] }}"
            },
            {
              "name": "Purchase Price",
              "value": "={{ $node[\"Baserow\"].json[\"Purchase Price\"] }}"
            },
            {
              "name": "Current Value",
              "value": "={{ (parseFloat($json[\"Bid\"].replace(',', '.')) * parseFloat($node[\"Baserow\"].json[\"Count\"])).toFixed(2) }}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    },
    {
      "id": "c2f329dc-3b97-402a-9d63-ed863c2aee84",
      "name": "Calculate change",
      "type": "n8n-nodes-base.set",
      "position": [
        1340,
        200
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "Change",
              "value": "={{ ( parseFloat($json[\"Current Value\"]) - parseFloat($json[\"Purchase Price\"]) ).toFixed(2) }}"
            },
            {
              "name": "Change (%)",
              "value": "={{ ( ( ( parseFloat($json[\"Current Value\"]) - parseFloat($json[\"Purchase Price\"]) ) / parseFloat($json[\"Purchase Price\"]) ) * 100).toFixed(2) }}"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "e0876374-c9f3-4253-8764-9aa78faa2193",
      "name": "SendGrid",
      "type": "n8n-nodes-base.sendGrid",
      "position": [
        1780,
        200
      ],
      "parameters": {
        "subject": "Investment report",
        "toEmail": "mutedjam@n8n.io",
        "resource": "mail",
        "fromEmail": "mutedjam@n8n.io",
        "contentType": "text/html",
        "contentValue": "={{ $json[\"html\"] }}",
        "additionalFields": {}
      },
      "credentials": {
        "sendGridApi": {
          "id": "143",
          "name": "SendGrid account"
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Cron": {
      "main": [
        [
          {
            "node": "Baserow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Baserow": {
      "main": [
        [
          {
            "node": "Fetch tradegate stock page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build HTML": {
      "main": [
        [
          {
            "node": "SendGrid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format result": {
      "main": [
        [
          {
            "node": "Calculate change",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate change": {
      "main": [
        [
          {
            "node": "Build HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "Baserow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch tradegate stock page": {
      "main": [
        [
          {
            "node": "Parse tradegate stock page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse tradegate stock page": {
      "main": [
        [
          {
            "node": "Format result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Baserow, envoi d'emails, données financières : pour qui est ce workflow ?

Ce workflow s'adresse aux entreprises et équipes qui gèrent des données financières, notamment celles qui utilisent Baserow pour la gestion de leurs bases de données. Il est idéal pour les analystes financiers, les gestionnaires de portefeuille et toute organisation qui souhaite automatiser le suivi des actions boursières. Un niveau technique intermédiaire est recommandé pour la personnalisation.

Workflow n8n Baserow, envoi d'emails, données financières : problème résolu

Ce workflow résout le problème de la collecte manuelle des données boursières, qui peut être chronophage et sujet à des erreurs. En automatisant ce processus, les utilisateurs peuvent réduire le temps passé à rechercher des informations financières et minimiser les risques d'erreurs humaines. À la suite de la mise en place de ce workflow, les utilisateurs bénéficient d'une mise à jour rapide et fiable des données boursières, leur permettant de prendre des décisions éclairées en temps réel.

Workflow n8n Baserow, envoi d'emails, données financières : étapes du workflow

Étape 1 : Le workflow est déclenché par un Cron qui exécute le processus à des intervalles réguliers.

  • Étape 1 : Il interroge la base de données Baserow pour récupérer les informations nécessaires.
  • Étape 2 : Une requête HTTP est envoyée pour obtenir la page de stock de Tradegate.
  • Étape 3 : Les données de cette page sont extraites grâce au noeud HTML Extract.
  • Étape 4 : Les informations extraites sont formatées et traitées pour calculer les variations de prix.
  • Étape 5 : Les résultats sont envoyés par email via SendGrid, assurant que les utilisateurs reçoivent des mises à jour en temps réel.

Workflow n8n Baserow, envoi d'emails, données financières : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL de la page de stock dans le noeud HTTP Request pour cibler d'autres sources d'informations boursières. Il est également possible d'ajuster les paramètres de la base de données Baserow, tels que les ID de table et de base de données, pour s'assurer que les données sont correctement insérées. Pensez à adapter le contenu de l'email dans le noeud SendGrid pour qu'il corresponde à votre style de communication. Enfin, vous pouvez ajouter des conditions supplémentaires pour filtrer les données avant l'envoi des emails, afin de ne transmettre que les informations les plus pertinentes.