Automatisation de la recherche d'emploi avec Job Search Global API et Google Sheets
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 15 nœuds.Utilise principalement des nœuds comme If, Set, Code, EmailSend, HttpRequest. Automatisation de la recherche d'offres d'emploi avec Job Search Global API et Google Sheets
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Nœuds utilisés (15)
Catégorie
{
"meta": {
"instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01",
"name": "Définir le terme de recherche",
"type": "n8n-nodes-base.set",
"position": [
272,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "bb36d63f-a074-40b1-9d83-dd573566f6af",
"name": "Search Term",
"type": "string",
"value": "Web Developer"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c",
"name": "Récupérer les offres d'emploi",
"type": "n8n-nodes-base.httpRequest",
"position": [
496,
0
],
"parameters": {
"url": "https://job-search-global.p.rapidapi.com/search.php",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "pageNumber",
"value": "1"
},
{
"name": "pageSize",
"value": "10"
},
{
"name": "searchQuery",
"value": "={{ $json[\"Search Term\"] }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "job-search-global.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "your key"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "16e842c1-fd91-4082-b015-387632eff19f",
"name": "Vérifier la réponse API",
"type": "n8n-nodes-base.if",
"position": [
784,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ef7b71fa-c726-4e08-8fdb-55c215227bb0",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "={{ $json.status }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ec64192d-9865-45f0-b4be-e3ee18ebbe5c",
"name": "Envoyer un email de notification d'échec",
"type": "n8n-nodes-base.emailSend",
"position": [
1072,
224
],
"webhookId": "f1359f08-e267-44d2-9fca-505f66b5feb6",
"parameters": {
"html": "Hello,\n\nThe job search automation workflow encountered a failure while attempting to fetch job listings from the API.\n\nPlease review the API request and ensure the following:\n- API key and host are valid and not expired.\n- The request payload is correctly formatted.\n- The API endpoint is available.\n\nYou may also want to inspect the response for further debugging.\n\nRegards, \nn8n Workflow Bot\n",
"options": {},
"subject": "🚨 Job Search API Failure Notification",
"toEmail": "dev@gmail.com",
"fromEmail": "itadmin@gmail.com"
},
"credentials": {
"smtp": {
"id": "nPwKPPgVavimTJX4",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "96a773ee-a81b-4aca-8ad1-9d982bd0a2cd",
"name": "Déclencheur planifié",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
0
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "294c8010-0792-4396-89ec-03ae8c60fe30",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-112
],
"parameters": {
"height": 240,
"content": "Triggers the workflow automatically every 6 hours.\nEnsures regular job search updates without manual execution."
},
"typeVersion": 1
},
{
"id": "9765dd80-dc0b-407f-a8b9-1746aaf44161",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-112
],
"parameters": {
"height": 240,
"content": "Defines the job search keyword (e.g., “Web Developer”).\nThis value is dynamically inserted into the API request body."
},
"typeVersion": 1
},
{
"id": "b1607d91-4603-4df8-b35d-7b7bb12ded61",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
-112
],
"parameters": {
"height": 240,
"content": "Sends a POST request to the Job Search Global API.\nFetches job data based on the search term, limited to 10 results per request."
},
"typeVersion": 1
},
{
"id": "5ca49f7d-2598-4403-ba55-7311e4208d6e",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-112
],
"parameters": {
"height": 240,
"content": "Evaluates whether the API returned a successful response.\nBranches the workflow into success (data processing) or failure (email alert)."
},
"typeVersion": 1
},
{
"id": "c70bdcd3-313b-4f95-8dc0-4287982f41ae",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
-256
],
"parameters": {
"height": 256,
"content": "Extracts the job listings array from the API response.\nTransforms it into individual records for Google Sheets."
},
"typeVersion": 1
},
{
"id": "785dd467-f560-4430-af77-3c935a5c6ccb",
"name": "Sauvegarder dans Google Sheet1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1392,
-128
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "company",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "postDate",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "postDate",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "jobSource",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "jobSource",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "slug",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "slug",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sentiment",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "sentiment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dateAdded",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "dateAdded",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tags",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "tags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "viewCount",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "viewCount",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"title"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "Rt0RWApx8PL9t0RF",
"name": "Google Docs account"
}
},
"typeVersion": 4.7
},
{
"id": "e8456e00-4912-4d6c-a962-717cecf5ef38",
"name": "Extraire les données d'emploi",
"type": "n8n-nodes-base.code",
"position": [
1120,
-144
],
"parameters": {
"jsCode": "return $input.first().json.data.data;"
},
"typeVersion": 2
},
{
"id": "58681808-71b7-4041-b88a-70149c74fbf4",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1312,
-256
],
"parameters": {
"height": 256,
"content": "Appends or updates job listings in a specific Google Sheet.\nUses \"title\" as the matching column to prevent duplicates."
},
"typeVersion": 1
},
{
"id": "4bad0177-fc01-4169-a022-882c1c313d92",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1024,
112
],
"parameters": {
"height": 288,
"content": "Sends an email to notify of API failure or bad response.\nHelps in quickly identifying issues with the API call or authentication."
},
"typeVersion": 1
},
{
"id": "b0de1b25-f4b1-47dd-8a1b-1c8e47faba4d",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-896,
-368
],
"parameters": {
"width": 576,
"height": 880,
"content": "# Job Search Automation Workflow \n\n**Description:** \nThis workflow automates job searches by querying the Job Search Global API every 6 hours for the keyword \"Web Developer\". It processes the API response, extracts job listings, and appends or updates the results in a Google Sheet. If the API response indicates failure, it sends an email notification alerting the admin.\n\n\n### Workflow Steps:\n\n1. **Schedule Trigger** \n Runs the workflow automatically every 6 hours.\n\n2. **Set Search Term** \n Defines the job search keyword dynamically used in the API request (`\"Web Developer\"`).\n\n3. **Fetch Job Listings** \n Sends a POST request to the Job Search Global API with pagination parameters.\n\n4. **Check API Response** \n Validates if the API response status is successful.\n\n5. **Extract Job Data** \n Parses the job listings array from the API response for further processing.\n\n6. **Save to Google Sheet1** \n Appends or updates the extracted job listings in a specified Google Sheet, using the job title to avoid duplicates.\n\n7. **Send Failure Notification Email** (Conditional) \n Sends an alert email if the API response fails or returns an error.\n\n---\n\n### Notes: \n- Uses environment variables for API keys and authentication. \n- Prevents duplicate job entries by matching on the job title. \n- Includes helpful sticky notes explaining each node's purpose.\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01": {
"main": [
[
{
"node": "0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c",
"type": "main",
"index": 0
}
]
]
},
"e8456e00-4912-4d6c-a962-717cecf5ef38": {
"main": [
[
{
"node": "785dd467-f560-4430-af77-3c935a5c6ccb",
"type": "main",
"index": 0
}
]
]
},
"96a773ee-a81b-4aca-8ad1-9d982bd0a2cd": {
"main": [
[
{
"node": "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01",
"type": "main",
"index": 0
}
]
]
},
"16e842c1-fd91-4082-b015-387632eff19f": {
"main": [
[
{
"node": "e8456e00-4912-4d6c-a962-717cecf5ef38",
"type": "main",
"index": 0
}
],
[
{
"node": "ec64192d-9865-45f0-b4be-e3ee18ebbe5c",
"type": "main",
"index": 0
}
]
]
},
"0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c": {
"main": [
[
{
"node": "16e842c1-fd91-4082-b015-387632eff19f",
"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 - Création de contenu, 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
Evoort Solutions
@evoortsolutionsPartager ce workflow