Automatisation Google Calendar avec n8n : rappels vocaux programmés
- Ce workflow n8n a pour objectif de simplifier la gestion des rappels d'événements en utilisant Google Calendar et des notifications vocales. Il est particulièrement utile pour les entreprises qui souhaitent automatiser leurs rappels d'événements afin d'améliorer la productivité et de réduire les oublis. En intégrant des outils comme OpenAI pour générer des messages personnalisés, ce workflow permet de créer une expérience utilisateur fluide et efficace.
- Le processus commence avec un déclencheur programmé qui active le workflow à des intervalles définis. Ensuite, il interroge Google Calendar pour récupérer les rendez-vous à venir. Une fois les données collectées, un modèle de chat OpenAI génère un message basé sur les informations des événements. Ce message est ensuite transformé en un rappel vocal grâce à un appel HTTP, qui envoie les détails à un service de génération de voix. Enfin, le rappel vocal est envoyé par email aux participants via Gmail.
- Les bénéfices de cette automatisation n8n sont multiples : elle réduit le risque d'oubli d'événements importants, améliore la communication avec les participants et permet un gain de temps considérable dans la gestion des rappels. En intégrant des outils d'IA, ce workflow offre une valeur ajoutée significative pour les équipes souhaitant optimiser leur organisation.
Workflow n8n Google Calendar, rappels : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Google Calendar, rappels : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"meta": {
"instanceId": "4a11afdb3c52fd098e3eae9fad4b39fdf1bbcde142f596adda46c795e366b326"
},
"nodes": [
{
"id": "17ca0437-6101-4277-9ed2-e37e6b92df02",
"name": "When clicking 'Test workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-160,
280
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d3dd600a-2ab5-4d52-92ef-ab3f29dd1790",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
260,
400
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"typeVersion": 1.2
},
{
"id": "c29d58a2-243b-41ab-99c6-f8a8c92219cf",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
460,
400
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n },\n \"mail_object\": {\n \"type\": \"string\"\n }\n }\n}"
},
"typeVersion": 1.2
},
{
"id": "3cb31448-5bc3-47c2-a119-d9e33a464d1f",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-160,
80
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "18b243a5-db1f-4a27-a8a1-3a7c74135d6d",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
20
],
"parameters": {
"width": 260,
"height": 120,
"content": "## ElevenlabsAPI key\n**Click** to get your Elevenlabs API key. [Elevenlabs](https://try.elevenlabs.io/text-audio)"
},
"typeVersion": 1
},
{
"id": "62a9bd08-27f8-45a8-9eb4-30950500a36f",
"name": "Change filename",
"type": "n8n-nodes-base.code",
"position": [
880,
180
],
"parameters": {
"jsCode": "/*\n * Filename: addFileName.js\n * Purpose: Add a file name to binary data in an n8n workflow using mail_object from input\n */\n\nconst mailObject = $input.first().json.output.mail_object;\nconst fileName = `${mailObject}.mp3`;\n\nreturn items.map(item => {\n if (item.binary && item.binary.data) {\n item.binary.data.fileName = fileName;\n }\n return item;\n});"
},
"typeVersion": 2
},
{
"id": "41043058-ca06-4c3a-8b7d-597e2941d92b",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1020,
20
],
"parameters": {
"width": 300,
"height": 120,
"content": "## Gmail API Credentials \n**Click here** to view the [documentation](https://docs.n8n.io/integrations/builtin/credentials/google/) and configure your access permissions for the Google Gmail API."
},
"typeVersion": 1
},
{
"id": "3475e3ae-439d-4245-8994-4444266a67e3",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 300,
"height": 140,
"content": "## Calendar API Credentials \n**Click here** to view the [documentation](https://docs.n8n.io/integrations/builtin/credentials/google/) and configure your access permissions for the Google Calendar API."
},
"typeVersion": 1
},
{
"id": "7784fc2d-3e64-40f0-990f-965fba4ad67c",
"name": "Generate Voice Reminder",
"type": "n8n-nodes-base.httpRequest",
"position": [
660,
180
],
"parameters": {
"url": "https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb",
"method": "POST",
"options": {},
"sendBody": true,
"sendQuery": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "text",
"value": "={{ $json.output.message }}"
},
{
"name": "model_id",
"value": "eleven_multilingual_v2"
}
]
},
"genericAuthType": "httpCustomAuth",
"queryParameters": {
"parameters": [
{
"name": "output_format",
"value": "mp3_22050_32"
}
]
}
},
"notesInFlow": true,
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "a2081f29-493b-43c0-bad5-1b273d5db527",
"name": "Send Voice Reminder",
"type": "n8n-nodes-base.gmail",
"position": [
1100,
180
],
"webhookId": "5ba2c8cb-84f1-4363-8410-b8d138286c3a",
"parameters": {
"sendTo": "={{ $('Get Appointments').item.json.attendees[0].email }}",
"message": "=👇 Information for tomorrow 🗣️",
"options": {
"senderName": "John Carpenter",
"attachmentsUi": {
"attachmentsBinary": [
{}
]
},
"appendAttribution": false
},
"subject": "={{ $('create message').item.json.output.mail_object }}"
},
"typeVersion": 2.1
},
{
"id": "dd3bf7b2-f951-452a-8912-47ceace50cc0",
"name": "create message",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
280,
180
],
"parameters": {
"text": "=name: {{ $json.summary }}\ntime: {{ $json.start.dateTime }}\naddress: {{ $json.location }}\nToday's date: {{ $now }}",
"messages": {
"messageValues": [
{
"message": "=You are an assistant. You will create a structured message in JSON.\n\n**\nmessage:\nGenerate a voice script reminder for a real estate appointment. The message should be clear, professional, and engaging.\n\nIt must include:\n1. The recipient's name.\n2. The date and time of the appointment, expressed naturally (e.g., at noon, quarter past noon, half past three, quarter to five).\n3. The complete address of the property, expressed naturally (e.g., 12 Baker Street in London, Madison Avenue in New York, 5 Oakwood Drive in Los Angeles).\n4. A mention of the sender: Mr. John Carpenter from Super Agency.\n5. A confirmation sentence or an invitation to contact if needed.\n\nInput variables:\n• Recipient's name (prefixed with Mr. or Ms.)\n• Time: Appointment time\n• Address: Complete property address (only the street, number, and city; not the postal code)\n\nThe tone should be cordial and professional, suitable for an automated voice message.\n\nExample expected output: \"Hello Mrs. Richard, this is Mr. John Carpenter from Super Immo Agency.\nI am reminding you of your appointment scheduled for tomorrow at 8:15, at 63 Taverniers Road in Talence. If you have any questions or need to reschedule, please do not hesitate to contact me. See you tomorrow and have a great day!\"\n\n**\nmail_object: a very short email subject\nExample: Your appointment reminder for tomorrow"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.5
},
{
"id": "63806db8-6814-4fe4-ba2e-80511273ee51",
"name": "Get Appointments",
"type": "n8n-nodes-base.googleCalendar",
"position": [
60,
180
],
"parameters": {
"limit": 2,
"options": {},
"timeMax": "={{ $now.plus({ day: 2 }) }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "mymail@gmail.com",
"cachedResultName": "mymail@gmail.com"
},
"operation": "getAll"
},
"typeVersion": 1.3
}
],
"pinData": {},
"connections": {
"create message": {
"main": [
[
{
"node": "Generate Voice Reminder",
"type": "main",
"index": 0
}
]
]
},
"Change filename": {
"main": [
[
{
"node": "Send Voice Reminder",
"type": "main",
"index": 0
}
]
]
},
"Get Appointments": {
"main": [
[
{
"node": "create message",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get Appointments",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "create message",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Generate Voice Reminder": {
"main": [
[
{
"node": "Change filename",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "create message",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"When clicking 'Test workflow'": {
"main": [
[
{
"node": "Get Appointments",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Google Calendar, rappels : pour qui est ce workflow ?
Ce workflow s'adresse principalement aux PME et aux équipes de gestion de projet qui cherchent à automatiser la gestion de leurs rendez-vous. Il est idéal pour les utilisateurs ayant un niveau technique intermédiaire, souhaitant intégrer des solutions d'IA dans leur processus de travail.
Workflow n8n Google Calendar, rappels : problème résolu
Ce workflow résout le problème des rappels d'événements souvent oubliés, ce qui peut entraîner des pertes de temps et des occasions manquées. En automatisant l'envoi de rappels vocaux, il élimine les tâches manuelles et réduit le stress lié à la gestion des rendez-vous. Les utilisateurs bénéficient d'une communication améliorée et d'une meilleure organisation de leur emploi du temps.
Workflow n8n Google Calendar, rappels : étapes du workflow
Étape 1 : Le workflow est déclenché selon un calendrier défini.
- Étape 1 : Il récupère les rendez-vous à venir depuis Google Calendar.
- Étape 2 : Un modèle OpenAI génère un message basé sur les détails de l'événement.
- Étape 3 : Le message est transformé en un rappel vocal via un appel HTTP.
- Étape 4 : Le rappel vocal est envoyé par email aux participants via Gmail.
Workflow n8n Google Calendar, rappels : guide de personnalisation
Pour personnaliser ce workflow, commencez par ajuster la règle de déclenchement dans le nœud 'Schedule Trigger' selon vos besoins. Modifiez les paramètres du nœud 'Get Appointments' pour filtrer les événements selon vos critères (par exemple, calendrier spécifique ou plage horaire). Vous pouvez également personnaliser le contenu du message généré par OpenAI dans le nœud 'create message'. Enfin, assurez-vous que les paramètres d'authentification pour le nœud 'Generate Voice Reminder' sont correctement configurés pour le service que vous utilisez.