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é.
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
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.