2 petits tutoriels pour faire des workflows simples sur n8n :
Tuto: Obtenir des données depuis Grist (GET)
- Dans n8n, ajouter un noeud Grist:
Credential to connect with: “Create new credential”. La clé API peut être trouvée à [url_de_votre_instance/account]
Operation: “Get Many Rows”
Document ID: peut être trouvé dans Paramètres > ID du Document
Table ID: nom de la table (remplacer les espaces par _), en cas de doute le nom de la table peut être trouvé dans « Vue du Code » - Cliquez
Test step, voir que vous observez bien les données en sortie - Dans
Additional options>Filter>Add filter, vous pouvez ajouter un filtre sur une colonne d’intérêt
Prochaines étapes : ajouter d’autres nœuds après, par exemple le nœud « Convertir en fichier » pour transformer le json en csv ou xls, ou le nœud Metabase pour créer des tableaux de bord
Tuto: Ajouter ou modifier des données Grist (upsert)
Pour l’instant, le nœud Grist n8n propose uniquement des options distinctes pour « créer » ou « mettre à jour » (correspondant aux requêtes POST et PATCH). Nous souhaitons faire une requête PUT, c’est-à-dire créer la ligne si elle n’existe pas ou la mettre à jour si elle existe.
Nous allons donc utiliser le nœud de requête HTTP de n8n et le configurer pour ce faire.
Dans un premier temps, nous pouvons tester la requête dans la console API de Grist :
- Dans la console API de Grist (Paramètres > console de l’API), trouvez la section
recordset la requêtePUT - Cliquez
Try it out, sélectionnez le document qui vous intéresse dans la première liste déroulante et le tableau qui vous intéresse dans la seconde - Dans le corps de la requête, dans l’objet
require, écrire le nom de la colonne et la valeur à faire correspondre ; dansfieldsle nom de la colonne et la valeur à mettre à jour. Ex:
{
"records": [
{
"require": {
"Nom": "Georgina"
},
"fields": {
"Mail": "nouveaumail@hehe.fr"
}
}
]
}
-
Cliquez sur
Execute, voir la requête curl, l’URL de la requête et la réponse du serveur (doit être 200). Vérifiez dans le tableau de votre document Grist que les champs ont été créés ou mis à jour avec succès. -
Dans n8n, ajouter le noeud « HTTP »
Method: PUT
URL: collez l’URL de la requête depuis l’API de la console
Authentication: Generic Credential Type
Generic Auth Type: Header Auth
Header Auth:Create New Credentialsavec
Name= Authorization et
Value= Bearer YOUR_GRIST_API_KEY
Send Body: activated
Body Content Type: JSON
Specify Body :Using JSON
JSON: paste the JSON from the console API -
Click
Test stepet vérifiez dans la table Grist que les champs ont été créés ou mis à jour avec succès. Et voilà !
Il est possible d’utiliser le même procédé pour toutes les autres requêtes de l’API, que ce soit sur des colonnes, des tables, des documents etc. C’est également un procédé similaire pour les applications n’étant pas intégrées à n8n (tant qu’elles ont une API).
Pour la configuration d’un point d’ancrage / webhook (déclenchement d’un workflow lors d’un changement dans une table Grist), voir le tuto 2 de ce post: Envoyer des emails avec n8n
Le fichier json (à enregistrer en .json, il peut être importé directement dans n8n)
{
"name": "Grist simple examples",
"nodes": [
{
"parameters": {
"binaryPropertyName": "=",
"options": {}
},
"id": "6c43e368-39d7-4a6d-9eb9-a9710d375e0a",
"name": "Convert to File",
"type": "n8n-nodes-base.convertToFile",
"typeVersion": 1.1,
"position": [
-480,
660
]
},
{
"parameters": {
"content": "## Add or Update data\n",
"height": 249.14686976518175,
"width": 1146.9145651495285,
"color": 2
},
"id": "f7d9191e-d5bd-49de-95fe-44d157d7c2ba",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1040,
860
]
},
{
"parameters": {
"content": "## Get data\n",
"height": 241.76566563124703,
"width": 1146.9145651495285,
"color": 5
},
"id": "502a8668-4b83-4eb2-991e-9f02958c9359",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1040,
600
]
},
{
"parameters": {},
"id": "0bcfefb8-5795-455d-9081-56763ce313ff",
"name": "When clicking ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-920,
660
]
},
{
"parameters": {
"jsCode": "return [\n {\n \"species\": \"Rhinolophus mehelyi\",\n \"category\": \"Critically Endangered\",\n },\n {\n \"species\": \"Corsican Bat Myotis nustrale\",\n \"category\": \"Least Concern\",\n }\n];"
},
"id": "e712ce9f-62b9-4353-9d0d-7277065a56d8",
"name": "new data",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-660,
920
]
},
{
"parameters": {
"docId": "4bcewbGwxdzhGM7KJioKMb",
"tableId": "Communes",
"additionalOptions": {}
},
"id": "1e7d9450-253f-411d-a771-1d39106f2efe",
"name": "Grist get rows",
"type": "n8n-nodes-base.grist",
"typeVersion": 1,
"position": [
-660,
660
],
"credentials": {
"gristApi": {
"id": "hxImCvhZbyUHAIkS",
"name": "Grist account 2"
}
}
},
{
"parameters": {
"method": "PUT",
"url": "https://docs.getgrist.com/api/docs/o3CCCCCCCCCCCw/tables/French_bats_species/records",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"records\": [\n {\n \"require\": {\n \"Species\": \"{{$json.species}}\"\n },\n \"fields\": {\n \"Red_list_category\":\"{{$json.category}}\"\n }\n }\n ]\n} ",
"options": {}
},
"id": "8b7b7d1d-42b3-40af-8781-418db2fddfc0",
"name": "Grist PUT request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-480,
920
],
"credentials": {
"httpHeaderAuth": {
"id": "yXy7keE1NvlNK4wl",
"name": "Header Auth account"
}
}
},
{
"parameters": {
"fromEmail": "ssss@e.email",
"toEmail": "ssss@e.email",
"subject": "IUCN bat status changed 🦇",
"emailFormat": "text",
"text": "=Hello, \nThe {{$json.body[0].Species}} is now listed in the IUCN red list as \"{{$json.body[0].Red_list_category}}\".\n\nKind regards",
"options": {}
},
"id": "27ea1d94-7d9d-4c0c-a7be-9f0e8665e6c1",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2.1,
"position": [
-480,
1180
],
"credentials": {
"smtp": {
"id": "qdRk2D2IJzyBxgFN",
"name": "SMTP account"
}
}
},
{
"parameters": {
"content": "## Respond to Grist webhook\n",
"height": 241.76566563124703,
"width": 1146.9145651495285,
"color": 6
},
"id": "30f38f80-1f7e-40e0-b9ae-9b17f7c9d97e",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1040,
1140
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "03e24572-a381-455e-a5b8-ae697647f7d4",
"options": {}
},
"id": "d9e4bdd3-0892-4774-8626-e679f2ab76dd",
"name": "Webhook: Grist data changed",
"type": "n8n-nodes-base.webhook",
"position": [
-660,
1180
],
"webhookId": "03e24572-a381-455e-a5b8-ae697647f7d4",
"typeVersion": 1.1
}
],
"pinData": {},
"connections": {
"When clicking ‘Test workflow’": {
"main": [
[
{
"node": "Grist get rows",
"type": "main",
"index": 0
}
]
]
},
"new data": {
"main": [
[
{
"node": "Grist PUT request",
"type": "main",
"index": 0
}
]
]
},
"Grist get rows": {
"main": [
[
{
"node": "Convert to File",
"type": "main",
"index": 0
}
]
]
},
"Webhook: Grist data changed": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "00622671-91e4-4e52-af7e-b9aaf34b9ae1",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "c72a9cba71c59f460b0e40bdba55cf485741c8f5079e60f3aed3fe7c1a35e0dd"
},
"id": "wjL26RUqLjhuWtay",
"tags": []
}
Détails authentification
Vous pouvez créer l’authentification avec :
-
clé API : vous trouverez votre clé à l’adresse indiquée dans Paramètres > Console API
-
url : il faut utiliser l’url de l’espace d’équipe, ex :
https://grist.incubateur.anct.gouv.fr/o/nom-de-l-espace-d-equipe

