my workflow .json
{
“name”: “Google Sheet → Vertex AI (Gemini) → Feuille2”,
“nodes”: [
{
“parameters”: {
“pollTimes”: {
“item”: [
{
“mode”: “everyMinute”
}
]
},
“documentId”: {
“__rl”: true,
“value”: “1slZZ6CMKH3nhRo7saoldj6GAKXxGRLdo_kbO8bB5Z0Y”,
“mode”: “list”,
“cachedResultName”: “cliche”,
“cachedResultUrl”: “https://docs.google.com/spreadsheets/d/1slZZ6CMKH3nhRo7saoldj6GAKXxGRLdo_kbO8bB5Z0Y/edit?usp=drivesdk”
},
“sheetName”: {
“__rl”: true,
“value”: 1411598489,
“mode”: “list”,
“cachedResultName”: “Feuille 1”,
“cachedResultUrl”: “https://docs.google.com/spreadsheets/d/1slZZ6CMKH3nhRo7saoldj6GAKXxGRLdo_kbO8bB5Z0Y/edit#gid=1411598489”
},
“options”: {}
},
“id”: “eb5e8a22-30b5-4a82-b622-75bd6a01d4ab”,
“name”: “Sheet Trigger”,
“type”: “n8n-nodes-base.googleSheetsTrigger”,
“typeVersion”: 1,
“position”: [
-1408,
-592
],
“credentials”: {
“googleSheetsTriggerOAuth2Api”: {
“id”: “JshiEOpYVmapUdZe”,
“name”: “Google Sheets Trigger account”
}
}
},
{
“parameters”: {
“sheetId”: “1slZZ6CMKH3nhRo7saoldj6GAKXxGRLdo_kbO8bB5Z0Y”,
“range”: “Feuille1!A:Z”,
“options”: {}
},
“id”: “d33461c5-6a6d-44a7-b601-aa2a2596b629”,
“name”: “Read Sheet”,
“type”: “n8n-nodes-base.googleSheets”,
“typeVersion”: 2,
“position”: [
-1152,
-592
],
“credentials”: {
“googleSheetsOAuth2Api”: {
“id”: “C3sCWF4CKRjDLEQC”,
“name”: “Google Sheets account [email protected]”
}
}
},
{
“parameters”: {
“batchSize”: 1,
“options”: {}
},
“id”: “295ec246-ae63-4bc2-aa2e-c86ca79f8efd”,
“name”: “Split In Batches”,
“type”: “n8n-nodes-base.splitInBatches”,
“typeVersion”: 1,
“position”: [
-912,
-592
]
},
{
“parameters”: {
“operation”: “append”,
“sheetId”: “1slZZ6CMKH3nhRo7saoldj6GAKXxGRLdo_kbO8bB5Z0Y”,
“range”: “Feuille2!A:Z”,
“options”: {
“valueInputMode”: “RAW”
}
},
“id”: “a9654637-9c97-45ba-9216-a30e3d5298b3”,
“name”: “Write to Feuille2”,
“type”: “n8n-nodes-base.googleSheets”,
“typeVersion”: 2,
“position”: [
304,
-592
],
“credentials”: {
“googleSheetsOAuth2Api”: {
“id”: “C3sCWF4CKRjDLEQC”,
“name”: “Google Sheets account [email protected]”
}
}
},
{
“parameters”: {
“promptType”: “define”,
“text”: “=Tu es un assistant d’extraction et de normalisation de données (facture / ligne d’article).\nObjectif : transformer les champs ci-dessous en un JSON strict, valide, sans texte autour.\n\nRègles :\n- Réponds UNIQUEMENT avec un JSON (pas de Markdown, pas d’explication).\n- Si une valeur est absente, mets null.\n- Convertis les nombres en number (pas de texte), enlève les espaces, gère virgule/point.\n- Ne devine pas : si incertain => null.\n- Garde les chaînes en français, mais sans fautes volontaires.\n\nDonnées (entrée n8n) :\n- code_f: {{ $json[‘code f’] }}\n- fournisseur: {{ $json.fournis }}\n- client: {{ $json.CLIENT }}\n- maquettes: {{ $json.MAQUETTS }}\n- prix: {{ $json.PRIX }}\n- surfaces: {{ $json.SURFACES }}\n- total_ht: {{ $json[‘TOTAL HT’] }}\n\nSortie attendue (JSON strict) :\n{\n “code_f”: <string|null>,\n “fournisseur”: <string|null>,\n “client”: <string|null>,\n “designation”: <string|null>,\n “prix_unitaire”: <number|null>,\n “surface”: <string|null>,\n “total_ht”: <number|null>,\n “controle”: {\n “erreurs”: ,\n “warnings”: \n }\n}\n”,
“messages”: {
“messageValues”: [
{
“message”: “Tu es un assistant spécialisé en extraction et normalisation de données de factures/lignes d’articles.\nObjectif : \ntri moi les ligne qui non pas de couleur et génére moi un tableaux sur la feuille2 toute les ligne qui non pas de couleur\nproduire un JSON strict et valide à partir des données utilisateur, sans texte autour.\n\nContraintes :\n- Réponds uniquement avec du JSON (aucun Markdown, aucune explication).\n- Ne devine pas : si une info manque ou est incertaine, mets null.\n- Convertis les montants en number (gère virgule/point), conserve les libellés en string.\n- Si tu détectes une incohérence, ajoute un tableau “controle” avec “erreurs” et “warnings”.\n”
}
]
},
“batching”: {}
},
“type”: “@n8n/n8n-nodes-langchain.chainLlm”,
“typeVersion”: 1.9,
“position”: [
-464,
-592
],
“id”: “a9cb96cd-1a6b-475d-b0a3-9f49d380b57f”,
“name”: “Basic LLM Chain”,
“retryOnFail”: true,
“maxTries”: 5,
“waitBetweenTries”: 5000
},
{
“parameters”: {},
“type”: “n8n-nodes-base.wait”,
“typeVersion”: 1.1,
“position”: [
-704,
-592
],
“id”: “a296c3de-1bf7-4ced-a2a9-8c1fe24b4fd0”,
“name”: “Wait2”,
“webhookId”: “02bcdf63-dc92-41f3-a578-de660eeda0ca”,
“retryOnFail”: true,
“waitBetweenTries”: 15,
“maxTries”: 5
},
{
“parameters”: {
“model”: “meta-llama/llama-3.2-3b-instruct:free”,
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.lmChatOpenRouter”,
“typeVersion”: 1,
“position”: [
-640,
-288
],
“id”: “a1c29bbe-aa63-460d-b527-cc58473fb474”,
“name”: “OpenRouter Chat Model”,
“credentials”: {
“openRouterApi”: {
“id”: “XIh145navXsBnYkA”,
“name”: “OpenRouter accountn8nv22026”
}
}
}
],
“pinData”: {
“Sheet Trigger”: [
{
“json”: {
“L”: 45476,
“code f”: 5583,
“fournis”: “YAHIAOUI”,
“CLIENT”: “DAHMANE KARIM kimo huile”,
“MAQUETTS”: “huile d’assaisonnement 4x3l emb 53108”,
“PRIX”: 6,
“SURFACES”: “11511CM²”,
“TOTAL HT”: 69066,
“INFORGRAPHE”: “khadija”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 46014,
“code f”: 10382,
“fournis”: “YAHAOUI”,
“CLIENT”: “yaomy”,
“MAQUETTS”: “yaomy family 5x70gr emb 59207”,
“PRIX”: 6,
“SURFACES”: “12734CM²”,
“TOTAL HT”: 76404,
“INFORGRAPHE”: “driss”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 46025,
“code f”: 945972,
“fournis”: “miLLER”,
“CLIENT”: “mohamed brahimi”,
“MAQUETTS”: “proliant server hp emb 59306”,
“PRIX”: 6,
“SURFACES”: “2860CM²”,
“TOTAL HT”: 17160,
“INFORGRAPHE”: “omar”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 46015,
“code f”: 11240,
“fournis”: “POLY SLIM”,
“CLIENT”: “cherfaoui food”,
“MAQUETTS”: “caisse food licorice root 10kg emb 58985”,
“PRIX”: 6,
“SURFACES”: “5700CM²”,
“TOTAL HT”: 34200,
“INFORGRAPHE”: “khadija”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 45002,
“code f”: “00745064-001-000”,
“fournis”: “MILLER”,
“CLIENT”: “PHARMIDAL”,
“MAQUETTS”: “ac3ac0131”,
“PRIX”: 6,
“SURFACES”: “1800CM²”,
“TOTAL HT”: 10800,
“INFORGRAPHE”: “rania”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 45002,
“code f”: “00745057-001-000”,
“fournis”: “MILLER”,
“CLIENT”: “PHARMIDAL”,
“MAQUETTS”: “ac3ac0291”,
“PRIX”: 6,
“SURFACES”: “1900CM²”,
“TOTAL HT”: 11400,
“INFORGRAPHE”: “rania”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 45733,
“code f”: 2019,
“fournis”: “STUDIO FL”,
“CLIENT”: “sarl choco chic”,
“MAQUETTS”: “barquette 180x12”,
“PRIX”: 6,
“SURFACES”: “6800CM²”,
“TOTAL HT”: 40800,
“INFORGRAPHE”: “tayeb”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 45733,
“code f”: 2020,
“fournis”: “STUDIO FL”,
“CLIENT”: “sarl choco chic”,
“MAQUETTS”: “barquette 320x6 emb 56960”,
“PRIX”: 6,
“SURFACES”: “7298CM²”,
“TOTAL HT”: 43788,
“INFORGRAPHE”: “tayeb”
},
“pairedItem”: {
“item”: 0
}
},
{
“json”: {
“L”: 45899,
“code f”: 5979,
“fournis”: “FLEXOMONDE”,
“CLIENT”: “eurm madhuri”,
“MAQUETTS”: “riz 10kg emb 58235”,
“PRIX”: 6,
“SURFACES”: “7579CM²”,
“TOTAL HT”: 45474,
“INFORGRAPHE”: “khadija”
},
“pairedItem”: {
“item”: 0
}
}
]
},
“connections”: {
“Sheet Trigger”: {
“main”: [
[
{
“node”: “Read Sheet”,
“type”: “main”,
“index”: 0
}
]
]
},
“Read Sheet”: {
“main”: [
[
{
“node”: “Split In Batches”,
“type”: “main”,
“index”: 0
}
]
]
},
“Split In Batches”: {
“main”: [
[
{
“node”: “Wait2”,
“type”: “main”,
“index”: 0
}
]
]
},
“Basic LLM Chain”: {
“main”: [
[
{
“node”: “Write to Feuille2”,
“type”: “main”,
“index”: 0
}
]
]
},
“Wait2”: {
“main”: [
[
{
“node”: “Basic LLM Chain”,
“type”: “main”,
“index”: 0
}
]
]
},
“OpenRouter Chat Model”: {
“ai_languageModel”: [
[
{
“node”: “Basic LLM Chain”,
“type”: “ai_languageModel”,
“index”: 0
}
]
]
}
},
“active”: false,
“settings”: {
“executionOrder”: “v1”,
“availableInMCP”: false
},
“versionId”: “c3e48a5b-d6e0-4e66-a7c5-1803e505ccf7”,
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “c77e41168b0abc4c9e72e3dfa70fb293d0acb289b40b847421933eadc146e082”
},
“id”: “HT1RybpiVplkx8kTjVB88”,
“tags”:
}
I’m looking to switch to a free trial version of AI. Can anyone help me with that?
Describe the problem/error/question
What is the error message (if any)?
Please share your workflow
(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)
Share the output returned by the last node
Information on your n8n setup
- n8n version:
- Database (default: SQLite):
- n8n EXECUTIONS_PROCESS setting (default: own, main):
- Running n8n via (Docker, npm, n8n cloud, desktop app):
- Operating system: