Traduction automatique des e-mails Gmail
Ceci est unMultimodal AIworkflow d'automatisation du domainecontenant 9 nœuds.Utilise principalement des nœuds comme If, Code, Gmail, OpenAi, GmailTrigger. Traduire automatiquement les e-mails Gmail reçus en anglais en utilisant OpenAI GPT-3.5
- •Compte Google et informations d'identification Gmail API
- •Clé API OpenAI
Nœuds utilisés (9)
Catégorie
{
"meta": {
"instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
},
"nodes": [
{
"id": "20d9e7a4-52a6-42d4-8e30-640cf2bcb6dd",
"name": "Instructions de Configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
16
],
"parameters": {
"width": 280,
"height": 520,
"content": "🌍 **SETUP REQUIRED:**\n\n1. **Gmail Label:**\n - Create label: 'Translated Emails'\n - Or customize in final Gmail node\n\n2. **OpenAI API Key:**\n - Get from platform.openai.com\n - Add to n8n credentials\n - Uses GPT-3.5-turbo (cost-effective)\n\n3. **Gmail OAuth:**\n - Connect Gmail account\n - Needs read/modify permissions\n\n🎯 Auto-detects language & translates non-English emails!"
},
"typeVersion": 1
},
{
"id": "c2eff161-87e1-42b4-bb00-364a5b448c9f",
"name": "Gmail Déclencheur de Nouvel Email",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-48,
240
],
"parameters": {
"simple": false,
"filters": {
"readStatus": "unread",
"includeSpamTrash": false
},
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"typeVersion": 1
},
{
"id": "9c6427cc-261a-43af-a4aa-97ceba914d42",
"name": "Normaliser les Données de l'Email",
"type": "n8n-nodes-base.code",
"position": [
160,
240
],
"parameters": {
"jsCode": "// Normalize email data and prepare for language detection\nconst email = $input.first().json;\n\n// Extract email content - handle both plain text and HTML\nlet emailBody = email.snippet || email.textPlain || email.textHtml || '';\n\n// Remove HTML tags if present\nif (emailBody.includes('<')) {\n emailBody = emailBody.replace(/<[^>]*>/g, ' ').replace(/\\s+/g, ' ').trim();\n}\n\n// Skip if email is too short to translate meaningfully\nif (emailBody.length < 10) {\n console.log('Email too short, skipping translation');\n return null;\n}\n\nconst normalizedData = {\n message_id: email.id,\n thread_id: email.threadId,\n subject: email.subject || 'No Subject',\n from: email.from,\n to: email.to,\n body_text: emailBody,\n received_date: email.date,\n labels: email.labelIds || [],\n has_attachments: (email.attachments && email.attachments.length > 0)\n};\n\nconsole.log('Email prepared for language detection:', {\n subject: normalizedData.subject,\n from: normalizedData.from,\n body_preview: normalizedData.body_text.substring(0, 100) + '...'\n});\n\nreturn {\n json: normalizedData\n};"
},
"typeVersion": 2
},
{
"id": "e153e8ca-38ab-48cb-be2f-cdba1cca6faf",
"name": "Détecter la Langue (OpenAI)",
"type": "n8n-nodes-base.openAi",
"position": [
352,
240
],
"parameters": {
"resource": "chat",
"operation": "create",
"requestOptions": {}
},
"typeVersion": 1
},
{
"id": "ebc6660f-0a30-4c23-be79-1d2f8cbfddbd",
"name": "Traduction Nécessaire ?",
"type": "n8n-nodes-base.if",
"position": [
560,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition-1",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.choices[0].message.content.trim().toLowerCase() }}",
"rightValue": "en"
}
]
}
},
"typeVersion": 2
},
{
"id": "18108511-b253-4bba-9efb-c3cfe4f71090",
"name": "Traduire en Anglais",
"type": "n8n-nodes-base.openAi",
"position": [
752,
144
],
"parameters": {
"resource": "chat",
"operation": "create",
"requestOptions": {}
},
"typeVersion": 1
},
{
"id": "ce532d8a-6cbc-4320-8cb1-a82a28126a14",
"name": "Préparer l'Email Traduit",
"type": "n8n-nodes-base.code",
"position": [
960,
144
],
"parameters": {
"jsCode": "// Prepare translated email for forwarding\nconst originalEmail = $('Normalize Email Data').item.json;\nconst translationResponse = $input.first().json;\nconst detectedLanguage = $('Detect Language (OpenAI)').item.json.choices[0].message.content.trim();\n\nconst translatedContent = translationResponse.choices[0].message.content;\n\n// Create forwarded email content\nconst forwardedEmail = {\n to: originalEmail.to, // Forward to same recipient or change as needed\n subject: `[TRANSLATED] ${originalEmail.subject}`,\n body: `🌍 AUTO-TRANSLATED EMAIL (Original Language: ${detectedLanguage.toUpperCase()})\n\n` +\n `📧 Original From: ${originalEmail.from}\n` +\n `📅 Received: ${originalEmail.received_date}\n` +\n `🔗 Message ID: ${originalEmail.message_id}\n\n` +\n `═══════════════════════════════════════\n` +\n `TRANSLATED CONTENT:\n\n${translatedContent}\n` +\n `═══════════════════════════════════════\n\n` +\n `✨ This email was automatically translated by n8n workflow.`,\n original_message_id: originalEmail.message_id,\n detected_language: detectedLanguage\n};\n\nconsole.log('Prepared translated email:', {\n subject: forwardedEmail.subject,\n detected_language: detectedLanguage\n});\n\nreturn {\n json: forwardedEmail\n};"
},
"typeVersion": 2
},
{
"id": "b2b30041-80a7-4b55-b594-0d717f365b09",
"name": "Envoyer l'Email Traduit",
"type": "n8n-nodes-base.gmail",
"position": [
1152,
144
],
"webhookId": "94f9ae15-5447-4228-8ed2-bfaf9756dc8d",
"parameters": {
"message": "={{ $json.body }}",
"options": {
"ccList": "",
"bccList": "",
"replyTo": ""
},
"subject": "={{ $json.subject }}"
},
"typeVersion": 2.1
},
{
"id": "7e9513fa-ce63-4815-b0a5-a05b622581d7",
"name": "Ajouter l'Étiquette 'Traduit'",
"type": "n8n-nodes-base.gmail",
"position": [
1152,
256
],
"webhookId": "f61c3040-51bb-4018-8862-46d41c170024",
"parameters": {
"labelIds": [
"INBOX",
"Translated Emails"
],
"messageId": "={{ $('Normalize Email Data').item.json.message_id }}",
"operation": "addLabels"
},
"typeVersion": 2.1
}
],
"pinData": {},
"connections": {
"ebc6660f-0a30-4c23-be79-1d2f8cbfddbd": {
"main": [
[
{
"node": "18108511-b253-4bba-9efb-c3cfe4f71090",
"type": "main",
"index": 0
}
]
]
},
"9c6427cc-261a-43af-a4aa-97ceba914d42": {
"main": [
[
{
"node": "e153e8ca-38ab-48cb-be2f-cdba1cca6faf",
"type": "main",
"index": 0
}
]
]
},
"18108511-b253-4bba-9efb-c3cfe4f71090": {
"main": [
[
{
"node": "ce532d8a-6cbc-4320-8cb1-a82a28126a14",
"type": "main",
"index": 0
}
]
]
},
"c2eff161-87e1-42b4-bb00-364a5b448c9f": {
"main": [
[
{
"node": "9c6427cc-261a-43af-a4aa-97ceba914d42",
"type": "main",
"index": 0
}
]
]
},
"e153e8ca-38ab-48cb-be2f-cdba1cca6faf": {
"main": [
[
{
"node": "ebc6660f-0a30-4c23-be79-1d2f8cbfddbd",
"type": "main",
"index": 0
}
]
]
},
"ce532d8a-6cbc-4320-8cb1-a82a28126a14": {
"main": [
[
{
"node": "b2b30041-80a7-4b55-b594-0d717f365b09",
"type": "main",
"index": 0
},
{
"node": "7e9513fa-ce63-4815-b0a5-a05b622581d7",
"type": "main",
"index": 0
}
]
]
}
}
}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 - IA Multimodale
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.
Workflows recommandés
David Olusola
@dae221I help ambitious businesses eliminate operational bottlenecks and scale faster with AI automation. My clients typically see 40-60% efficiency gains within 90 days. Currently accepting 3 new projects this quarter - david@daexai.com
Partager ce workflow