Filtrage d'e-mails et résumé AI automatisés avec Gmail, Groq AI et Google Sheets

Intermédiaire

Ceci est unTicket Management, AI Summarizationworkflow d'automatisation du domainecontenant 14 nœuds.Utilise principalement des nœuds comme If, Code, GmailTrigger, GoogleSheets, Agent. Automatisation du filtrage des e-mails et des résumés IA via Gmail, Groq AI et Google Sheets

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "a62a87f42cfae9ad2ff7f238a8854ab1946946f1bd38cb9d8b7442e62435a1d5"
  },
  "nodes": [
    {
      "id": "39b2d4bd-b29b-4e52-864e-0090e8f8e56f",
      "name": "Note de test",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1360,
        1460
      ],
      "parameters": {
        "color": 6,
        "width": 300,
        "height": 220,
        "content": "## 🧪 TEST BEFORE DEPLOYING\n1. Send test email\n2. Check Sheets output\n3. Verify summary quality\n4. Adjust filters/prompt as needed"
      },
      "typeVersion": 1
    },
    {
      "id": "75cc1f51-da2d-411a-bd64-7c574c5d5d11",
      "name": "Journal vers Google Sheets1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        980,
        1560
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $('info1').item.json.Date }}",
            "summary": "={{ $json.output }}",
            "subject ": "={{ $('info1').item.json.Subject }}",
            "sender name": "={{ $('info1').item.json[\"Sender Name\"] }}",
            "sender email": "={{ $('info1').item.json[\"Sender Email\"] }}"
          },
          "schema": [
            {
              "id": "sender name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sender name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sender email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sender email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subject ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subject ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "summary",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "sender name"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "YOUR_GOOGLE_SHEETS_URL",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "YOUR_GOOGLE_SHEETS_DOCUMENT_ID"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "b5d3d06e-116f-4c40-bbd0-c22cd622af96",
      "name": "Agent IA1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        400,
        1500
      ],
      "parameters": {
        "text": "=Please read this email \"{{ $json.Content }}\" and provide a very short, concise summary containing only the most important information. Keep the summary as brief as possible without losing essential details. ",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "a69f2251-947b-444c-b314-d510870b6583",
      "name": "Déclencheur Gmail",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -600,
        1600
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "labelIds": [
            "CATEGORY_PERSONAL"
          ]
        },
        "options": {
          "downloadAttachments": false
        },
        "pollTimes": {
          "item": [
            {
              "mode": "=everyHour",
              "minute": 59
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a7024314-9303-42f3-a854-dcb385c991f7",
      "name": "Vérifier l'e-mail valide",
      "type": "n8n-nodes-base.if",
      "position": [
        60,
        1600
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c1d2e3f4-g5h6-i7j8-k9l0-m1n2o3p4q5r6",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json[\"Sender Name\"] }}",
              "rightValue": "YOUR_SENDER_NAME_FILTER"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "eab995bb-43bf-4c23-9cc1-41b80a9deb0a",
      "name": "Modèle de chat Groq1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        260,
        2000
      ],
      "parameters": {
        "model": "llama-3.1-8b-instant",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "d408d58f-c818-4601-8109-f90bb152e381",
      "name": "info1",
      "type": "n8n-nodes-base.code",
      "position": [
        -260,
        1600
      ],
      "parameters": {
        "jsCode": "const items = [];\n\nfor (const item of $input.all()) {\n  const emailData = item.json;\n  \n  // Handle sender information (unchanged)\n  let senderEmail = '';\n  let senderName = '';\n\n  if (emailData.from?.value?.[0]) {\n    senderEmail = emailData.from.value[0].address || '';\n    senderName = emailData.from.value[0].name || senderEmail;\n  } else if (emailData.from?.text) {\n    const emailMatch = emailData.from.text.match(/<([^>]+)>/) || \n                      emailData.from.text.match(/([^\\s]+@[^\\s]+)/);\n    senderEmail = emailMatch ? emailMatch[1] : emailData.from.text;\n    \n    const nameMatch = emailData.from.text.match(/^([^<]+)/);\n    senderName = nameMatch ? nameMatch[1].trim().replace(/\\\"/g, '') : senderEmail;\n  }\n\n  // Format date (unchanged)\n  const receivedDate = new Date(emailData.date || emailData.receivedTime);\n  const formattedDate = receivedDate.toLocaleString('en-US', {\n    year: 'numeric',\n    month: '2-digit',\n    day: '2-digit',\n    hour: '2-digit',\n    minute: '2-digit',\n    hour12: true\n  });\n\n  // FIXED CONTENT EXTRACTION\n  let emailContent = '';\n  \n  // 1. First priority: Plain text version\n  if (emailData.text) {\n    emailContent = emailData.text;\n  } \n  // 2. Second priority: HTML version (convert to plain text)\n  else if (emailData.html) {\n    emailContent = emailData.html\n      .replace(/<style[^>]*>.*?<\\/style>/gs, '')  // Remove CSS\n      .replace(/<[^>]*>/g, ' ')                   // Strip HTML tags\n      .replace(/\\s+/g, ' ')                       // Collapse whitespace\n      .trim();\n  }\n  // 3. Fallback to other possible fields\n  else if (emailData.body || emailData.textPlain || emailData.textHtml) {\n    emailContent = emailData.body || emailData.textPlain || emailData.textHtml;\n  }\n\n  // Truncate content if too long\n  const maxContentLength = 5000;\n  if (emailContent.length > maxContentLength) {\n    emailContent = emailContent.substring(0, maxContentLength) + '... [truncated]';\n  }\n\n  // Create row data\n  const rowData = {\n    'Date': formattedDate,\n    'Sender Name': senderName,\n    'Sender Email': senderEmail,\n    'Subject': emailData.subject || 'No Subject',\n    'Content': emailContent,\n    //'Message ID': emailData.messageId || '',\n    'Has Attachments': emailData.attachments?.length > 0 ? 'Yes' : 'No'\n  };\n  \n  items.push({ json: rowData });\n}\n\nreturn items;"
      },
      "typeVersion": 2
    },
    {
      "id": "2bb19466-2a13-48d1-8f9c-be3db440c061",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        1380
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 400,
        "content": "## 🔑 Step 1: Add Gmail Credentials 👇"
      },
      "typeVersion": 1
    },
    {
      "id": "5fef7b17-cca7-4f06-99c0-efe6944b6a48",
      "name": "Note adhésive8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        1380
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 400,
        "content": "## 📧 Step 2: Email Processing Node\n"
      },
      "typeVersion": 1
    },
    {
      "id": "bf269863-ccaa-4a22-aff2-a98305d8c354",
      "name": "Note adhésive9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        1380
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 400,
        "content": "## ⚙️ Step 3: Sender Filter\n• Replace 'YOUR_SENDER_NAME_FILTER'\n• Only emails from this sender will proceed\n• Supports multiple conditions"
      },
      "typeVersion": 1
    },
    {
      "id": "2ea54fa1-fd79-48ca-854c-14b706cf3315",
      "name": "Note adhésive10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        360,
        1360
      ],
      "parameters": {
        "color": 5,
        "width": 360,
        "height": 420,
        "content": "## ✍️ Step 4: Customize AI Prompt\n• Default: Short email summary\n• Change tone/formality as needed"
      },
      "typeVersion": 1
    },
    {
      "id": "92c18c6f-3c83-41e0-8757-67455aff44da",
      "name": "Note adhésive11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        1900
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 220,
        "content": "## 🤖 Step 5: AI Configuration\n1. Add Groq API key\n2. Or replace with other AI model\n"
      },
      "typeVersion": 1
    },
    {
      "id": "56894a8f-5340-43a3-a852-7d4dadbdd376",
      "name": "Note adhésive12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        1380
      ],
      "parameters": {
        "color": 4,
        "width": 500,
        "height": 400,
        "content": "## 📊 Step 6: Google Sheets Setup\n1. Add Google credentials\n2. Paste Sheet URL\n3. Select target sheet\n4. Columns auto-map to email data"
      },
      "typeVersion": 1
    },
    {
      "id": "bb07639e-3edb-4be1-8554-cd6df8ebb22c",
      "name": "Note adhésive13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        1840
      ],
      "parameters": {
        "color": 4,
        "width": 700,
        "height": 420,
        "content": "## ✅ Expected Output Format\nColumns: Sender | Date | Email | Subject | Summary\n\n![Example Table](https://cdn.ablebits.com/_img-blog/google-sheets-create-table/table-format.webp)"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "d408d58f-c818-4601-8109-f90bb152e381": {
      "main": [
        [
          {
            "node": "a7024314-9303-42f3-a854-dcb385c991f7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b5d3d06e-116f-4c40-bbd0-c22cd622af96": {
      "main": [
        [
          {
            "node": "75cc1f51-da2d-411a-bd64-7c574c5d5d11",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a69f2251-947b-444c-b314-d510870b6583": {
      "main": [
        [
          {
            "node": "d408d58f-c818-4601-8109-f90bb152e381",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "eab995bb-43bf-4c23-9cc1-41b80a9deb0a": {
      "ai_languageModel": [
        [
          {
            "node": "b5d3d06e-116f-4c40-bbd0-c22cd622af96",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "a7024314-9303-42f3-a854-dcb385c991f7": {
      "main": [
        [
          {
            "node": "b5d3d06e-116f-4c40-bbd0-c22cd622af96",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Intermédiaire - Gestion des tickets, Résumé IA

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds14
Catégorie2
Types de nœuds7
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur
ARRE

ARRE

@arre

Automation Architect | I transform complexity into simplicity Building intelligent n8n workflows that do your heavy lifting in minutes, not hours. My mission: Eliminate repetitive tasks, streamline your operations, and give you back the most valuable resource – your time. Let’s make work feel lighter together.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34