Automatisation de la planification des entretiens et du nettoyage des données avec Cal.com et Google Sheets
Ceci est unHRworkflow d'automatisation du domainecontenant 14 nœuds.Utilise principalement des nœuds comme If, Set, Code, SplitOut, HttpRequest. Automatiser la planification des entretiens et le nettoyage des données avec Cal.com et Google Sheets
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Catégorie
{
"meta": {
"instanceId": "60098b76ad738e2ce8a403a46a5d6afed7799cdb6caa43f6858e6df2ac2bc8f5",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "da1d59c5-9f44-41b2-9239-9656a5524bc8",
"name": "Lors du clic sur 'Exécuter le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
60,
60
],
"parameters": {},
"typeVersion": 1
},
{
"id": "be3c688c-ca01-42b8-8fd6-6b715a187683",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"position": [
560,
60
],
"parameters": {
"url": "https://api.cal.com/v1/bookings",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "apiKey",
"value": "YOUR API KEY HERE"
},
{
"name": "id",
"value": "={{ $json.attendees[0].bookingId }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ba372028-e10d-46c8-bac9-eb3400e5c2f4",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"position": [
960,
60
],
"parameters": {
"include": "selected",
"options": {},
"assignments": {
"assignments": [
{
"id": "7084df2d-5689-48c1-a048-2a3861261073",
"name": "Email",
"type": "string",
"value": "={{ $json.email.toLowerCase() }}"
},
{
"id": "320d00bf-cc25-46b5-b4e9-ee4ecd45db66",
"name": "Interview Schedule",
"type": "string",
"value": "={{ $json.startFormatted }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "b9c03922-faf8-4c5c-87ba-cd44b8919aaa",
"name": "Google Sheets1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1440,
60
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupColumn": "SUMMARY "
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY/edit#gid=0",
"cachedResultName": "Accepted"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY/edit?usp=drivesdk",
"cachedResultName": "Resumes"
}
},
"credentials": {},
"typeVersion": 4.6
},
{
"id": "06ea5046-9679-47d3-876c-d9963a5bd47c",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
1660,
60
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "Email"
},
"typeVersion": 1
},
{
"id": "8d2456b4-8074-4b95-9f2d-9beca4f47f3a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
-260
],
"parameters": {
"content": "## 📅 Cal.com Calendar Setup\nThis section fetches all bookings from your Cal.com event.\n\n- Pulls booking data via Cal.com API\n- Extracts attendee name, email, and interview time\n\n🔐 Be sure to insert your Cal.com API Key."
},
"typeVersion": 1
},
{
"id": "73f5783e-f0e4-40e8-88e2-067bc86880b3",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
940,
-280
],
"parameters": {
"color": 3,
"width": 420,
"height": 280,
"content": "## 🔁 Link to Resume Screening Template\nThis workflow can be connected to the resume evaluation system.\n\n- Automatically assigns interview schedules\n- Matches bookings to existing applicants in your sheet\n\n📌 Useful for aligning candidate records with scheduled interviews."
},
"typeVersion": 1
},
{
"id": "4c2e0432-6b9c-4142-a17f-cb65cd31697e",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1820,
-220
],
"parameters": {
"width": 460,
"height": 220,
"content": "## 🧹 Data Cleanup Logic\nThis section ensures only valid candidates remain in the sheet.\n\n- Compares booking emails with accepted applicants\n- Deletes rows with missing or unmatched data (e.g. no summary)\n\n✅ Keeps your applicant tracking clean and relevant."
},
"typeVersion": 1
},
{
"id": "f61ef94a-6f49-4495-aa2c-9d4e8e3c02fd",
"name": "Itérer sur les e-mails",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1900,
60
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "e896a142-0045-4b18-bb84-23381fda6343",
"name": "Vérifier les e-mails non correspondants",
"type": "n8n-nodes-base.if",
"position": [
2120,
160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8aa988a0-0225-49fc-9953-e97746bc7c9b",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json['SUMMARY '] }}",
"rightValue": "="
}
]
}
},
"typeVersion": 2.2
},
{
"id": "231eee7f-33cc-4879-ab32-701543a83ec2",
"name": "Suppression",
"type": "n8n-nodes-base.googleSheets",
"position": [
2340,
140
],
"parameters": {
"operation": "delete",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY/edit#gid=0",
"cachedResultName": "Accepted"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY/edit?usp=drivesdk",
"cachedResultName": "Resumes"
},
"startIndex": "={{ $json.row_number }}"
},
"credentials": {},
"typeVersion": 4.6
},
{
"id": "7fa5068c-5b7c-4bb5-bd0c-a41560221141",
"name": "Ajout de l'heure et de la date pour l'entretien",
"type": "n8n-nodes-base.googleSheets",
"position": [
1200,
60
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "NAME",
"type": "string",
"display": true,
"required": false,
"displayName": "NAME",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone Number",
"type": "string",
"display": true,
"required": false,
"displayName": "Phone Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "JUSTIFICATION ",
"type": "string",
"display": true,
"required": false,
"displayName": "JUSTIFICATION ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SUMMARY ",
"type": "string",
"display": true,
"required": false,
"displayName": "SUMMARY ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Q1",
"type": "string",
"display": true,
"required": false,
"displayName": "Q1",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Q2",
"type": "string",
"display": true,
"required": false,
"displayName": "Q2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Q3",
"type": "string",
"display": true,
"required": false,
"displayName": "Q3",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Q4",
"type": "string",
"display": true,
"required": false,
"displayName": "Q4",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Q5",
"type": "string",
"display": true,
"required": false,
"displayName": "Q5",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"handlingExtraData": "ignoreIt"
},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY/edit#gid=0",
"cachedResultName": "Accepted"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18vvSKGbAiodQvNsdNTJ1pBuhEcv2ADAmQKtDNAK7VQY/edit?usp=drivesdk",
"cachedResultName": "Resumes"
}
},
"credentials": {},
"typeVersion": 4.6
},
{
"id": "a30e3a25-b55e-41bd-bd25-ac6821bdec32",
"name": "Conversion en heure",
"type": "n8n-nodes-base.code",
"position": [
760,
60
],
"parameters": {
"jsCode": "return $json.bookings.map(booking => {\n const date = new Date(booking.startTime);\n const formatted = date.toLocaleString(\"en-GB\", {\n timeZone: \"Asia/Riyadh\",\n day: \"2-digit\",\n month: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true\n });\n\n return {\n json: {\n name: booking.attendees[0].name,\n email: booking.attendees[0].email,\n startFormatted: formatted\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "365dad27-686d-4f38-9bbd-6beeb83573ca",
"name": "Récupération des informations de réservation",
"type": "n8n-nodes-base.httpRequest",
"position": [
340,
60
],
"parameters": {
"url": "https://api.cal.com/v1/attendees",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "apiKey",
"value": "your API KEY HERE"
}
]
}
},
"typeVersion": 4.2
}
],
"pinData": {},
"connections": {
"231eee7f-33cc-4879-ab32-701543a83ec2": {
"main": [
[
{
"node": "f61ef94a-6f49-4495-aa2c-9d4e8e3c02fd",
"type": "main",
"index": 0
}
]
]
},
"06ea5046-9679-47d3-876c-d9963a5bd47c": {
"main": [
[
{
"node": "f61ef94a-6f49-4495-aa2c-9d4e8e3c02fd",
"type": "main",
"index": 0
}
]
]
},
"ba372028-e10d-46c8-bac9-eb3400e5c2f4": {
"main": [
[
{
"node": "7fa5068c-5b7c-4bb5-bd0c-a41560221141",
"type": "main",
"index": 0
}
]
]
},
"be3c688c-ca01-42b8-8fd6-6b715a187683": {
"main": [
[
{
"node": "a30e3a25-b55e-41bd-bd25-ac6821bdec32",
"type": "main",
"index": 0
}
]
]
},
"b9c03922-faf8-4c5c-87ba-cd44b8919aaa": {
"main": [
[
{
"node": "06ea5046-9679-47d3-876c-d9963a5bd47c",
"type": "main",
"index": 0
}
]
]
},
"a30e3a25-b55e-41bd-bd25-ac6821bdec32": {
"main": [
[
{
"node": "ba372028-e10d-46c8-bac9-eb3400e5c2f4",
"type": "main",
"index": 0
}
]
]
},
"f61ef94a-6f49-4495-aa2c-9d4e8e3c02fd": {
"main": [
[],
[
{
"node": "e896a142-0045-4b18-bb84-23381fda6343",
"type": "main",
"index": 0
}
]
]
},
"e896a142-0045-4b18-bb84-23381fda6343": {
"main": [
[
{
"node": "231eee7f-33cc-4879-ab32-701543a83ec2",
"type": "main",
"index": 0
}
],
[
{
"node": "f61ef94a-6f49-4495-aa2c-9d4e8e3c02fd",
"type": "main",
"index": 0
}
]
]
},
"365dad27-686d-4f38-9bbd-6beeb83573ca": {
"main": [
[
{
"node": "be3c688c-ca01-42b8-8fd6-6b715a187683",
"type": "main",
"index": 0
}
]
]
},
"7fa5068c-5b7c-4bb5-bd0c-a41560221141": {
"main": [
[
{
"node": "b9c03922-faf8-4c5c-87ba-cd44b8919aaa",
"type": "main",
"index": 0
}
]
]
},
"da1d59c5-9f44-41b2-9239-9656a5524bc8": {
"main": [
[
{
"node": "365dad27-686d-4f38-9bbd-6beeb83573ca",
"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
Abdulaziz
@abdulaziz747Partager ce workflow