Job Search Global API と Google Sheets を使って求人検索を自動化
中級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、15個のノードを含みます。主にIf, Set, Code, EmailSend, HttpRequestなどのノードを使用。 Job Search Global API、Google Sheets を使って 自動化求人検索を行う
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01",
"name": "検索条件の設定",
"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": "求人リストの取得",
"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": "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": "失敗通知メールの送信",
"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": "トリガーのスケジュール設定",
"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": "付箋",
"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": "付箋1",
"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": "付箋2",
"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": "付箋3",
"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": "付箋4",
"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": "Googleスプレッドシートへの保存1",
"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": "求人データの抽出",
"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": "付箋5",
"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": "付箋6",
"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": "付箋7",
"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
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Google Sheetsとメール通知を使用してタイトルの明確さを最適化する
Google Sheetsとメール通知によるタイトルの明確さの最適化
If
Code
Email Send
+
If
Code
Email Send
14 ノードEvoort Solutions
コンテンツ作成
TikTok の文字起こし
RapidAPIとGoogle Sheetsを使ってTikTok動画の自動文字起こし
If
Code
Wait
+
If
Code
Wait
21 ノードEvoort Solutions
コンテンツ作成
画像 Transform AI、Google Sheets、および Google Driveを使用して画像を生成し、アップロードする
画像変換GPT、Google Sheets、Driveを使用して画像の生成・アップロード
If
Code
Wait
+
If
Code
Wait
23 ノードEvoort Solutions
コンテンツ作成
AI駆動型動画制作&Instagram/TikTok/YouTubeへの自動アップロード
クラウドドライブからAI駆動の動画作成およびInstagram、TikTok、YouTubeへのアップロード
If
Set
Code
+
If
Set
Code
53 ノードDevCode Journey
コンテンツ作成
ブログパブリッシャー – 完全AI駆動のコンテンツ調査、作成、最適化、公開の自動化
Gemini、Ideogram AI、WordPress でブログ作成と公開を自動化
If
Set
Code
+
If
Set
Code
35 ノードIncrementors
コンテンツ作成
Groq、Gemini、Slack承認システムを使用してRSSからMediumへの公開を自動化
Groq、Gemini、Slack承認システムを用いたRSSからMediumへの自動公開プロセス
If
Set
Code
+
If
Set
Code
41 ノードObisDev
コンテンツ作成