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など)は別途料金が発生する場合があります。

ワークフロー情報
難易度
中級
ノード数15
カテゴリー2
ノードタイプ8
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34