Envoyer les plannings d'entretien d'aujourd'hui à chaque interviewer par e-mail depuis Google Calendar
Ceci est unHRworkflow d'automatisation du domainecontenant 6 nœuds.Utilise principalement des nœuds comme Code, Gmail, GoogleCalendar, ScheduleTrigger. Envoi automatique des agendas d'entretien du jour via Gmail à chaque intervieweur depuis Google Calendar
- •Compte Google et informations d'identification Gmail API
Nœuds utilisés (6)
Catégorie
{
"id": "MvSVpfzaFUWELNTR",
"meta": {
"instanceId": "14e4c77104722ab186539dfea5182e419aecc83d85963fe13f6de862c875ebfa",
"templateCredsSetupCompleted": true
},
"name": "Send today’s interview schedule from Google Calendar to each interviewer via email",
"tags": [],
"nodes": [
{
"id": "1ad3eb39-d1e3-455c-ad06-3264c2b6ec91",
"name": "À propos de ce modèle",
"type": "n8n-nodes-base.stickyNote",
"position": [
-180,
720
],
"parameters": {
"width": 1220,
"height": 240,
"content": "## Description\nThis workflow automatically sends daily interview schedules to each interviewer via email. It is triggered every day at 8:00 AM, fetches all interview events from a specified Google Calendar, and groups them by interviewer email (based on the event organizer or creator). Each interviewer then receives a personalized HTML-formatted email listing their interview schedule for the day, including event titles, start and end times."
},
"typeVersion": 1
},
{
"id": "d25ce1fa-0914-4ec4-aca6-10b232a0e753",
"name": "Déclencheur programmé",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-100,
420
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "e16e6483-873a-4184-84dc-67120fbcb4a3",
"name": "Tableau HTML",
"type": "n8n-nodes-base.code",
"position": [
520,
420
],
"parameters": {
"jsCode": "const events = $input.all().map(e => e.json);\n\n// Group events by organizer or creator email\nconst grouped = {};\n\nfor (const event of events) {\n const interviewerEmail = event.organizer?.email || event.creator?.email;\n if (!interviewerEmail) continue;\n\n if (!grouped[interviewerEmail]) grouped[interviewerEmail] = [];\n\n const attendees = (event.attendees || []).map(att => {\n return `${att.email} (${att.responseStatus})`;\n }).join('<br>');\n\n grouped[interviewerEmail].push({\n summary: event.summary || 'No Title',\n start: event.start?.dateTime || event.start?.date || 'N/A',\n end: event.end?.dateTime || event.end?.date || 'N/A',\n description: event.description || 'No description',\n htmlLink: event.htmlLink || '',\n meetLink: event.conferenceData?.entryPoints?.[0]?.uri || event.hangoutLink || 'N/A',\n attendees: attendees || 'No attendees'\n });\n}\n\nconst output = [];\n\nfor (const [email, interviews] of Object.entries(grouped)) {\n let html = `<h3>Your Interview Schedule for Today</h3>\n <table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <th>Title</th>\n <th>Start</th>\n <th>End</th>\n <th>Description</th>\n <th>Meeting Link</th>\n <th>Attendees (Status)</th>\n </tr>`;\n\n for (const iv of interviews) {\n html += `<tr>\n <td>${iv.summary}</td>\n <td>${new Date(iv.start).toLocaleString('en-IN', { timeZone: 'Asia/Kolkata' })}</td>\n <td>${new Date(iv.end).toLocaleString('en-IN', { timeZone: 'Asia/Kolkata' })}</td>\n <td>${iv.description}</td>\n <td><a href=\"${iv.meetLink}\" target=\"_blank\">Join</a></td>\n <td>${iv.attendees}</td>\n </tr>`;\n }\n\n html += `</table>`;\n\n output.push({\n json: {\n interviewer_email: email,\n subject: \"Today's Interview Schedule\",\n htmlContent: html\n }\n });\n}\n\nreturn output;\n"
},
"typeVersion": 2
},
{
"id": "33bd4e2d-fa01-42e4-9daa-c545763df3b9",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
780,
420
],
"webhookId": "83f6fa30-5040-4cd7-8f80-8de32a34eef4",
"parameters": {
"sendTo": "={{ $json.interviewer_email }}",
"message": "={{ $json.htmlContent }}",
"options": {},
"subject": "Interview Reminder"
},
"credentials": {
"gmailOAuth2": {
"id": "FtDjIC7F7A1YfkbR",
"name": "Gmail account 6"
}
},
"typeVersion": 2.1
},
{
"id": "e9103f86-7674-4b4f-856e-babae68f6c0f",
"name": "Google Calendar (Récupérer les entretiens)",
"type": "n8n-nodes-base.googleCalendar",
"position": [
220,
420
],
"parameters": {
"options": {},
"calendar": {
"__rl": true,
"mode": "list",
"value": "pythontech3.wli@gmail.com",
"cachedResultName": "pythontech3.wli@gmail.com"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "xNOum1xp3mzYWwJr",
"name": "Google Calendar Pythontech3"
}
},
"typeVersion": 1.3
},
{
"id": "0b2f912b-19af-4c90-a42b-4f32daf6e73a",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-180,
320
],
"parameters": {
"color": 7,
"width": 1220,
"height": 360,
"content": "## Send today’s interview schedule from Google Calendar to each interviewer via email"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "61b63191-87b5-4974-99fa-7437035c1dcd",
"connections": {
"e16e6483-873a-4184-84dc-67120fbcb4a3": {
"main": [
[
{
"node": "33bd4e2d-fa01-42e4-9daa-c545763df3b9",
"type": "main",
"index": 0
}
]
]
},
"d25ce1fa-0914-4ec4-aca6-10b232a0e753": {
"main": [
[
{
"node": "e9103f86-7674-4b4f-856e-babae68f6c0f",
"type": "main",
"index": 0
}
]
]
},
"e9103f86-7674-4b4f-856e-babae68f6c0f": {
"main": [
[
{
"node": "e16e6483-873a-4184-84dc-67120fbcb4a3",
"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 - Ressources Humaines
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
WeblineIndia
@weblineindiaA Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.
Partager ce workflow