8
n8n 中文网amn8n.com

使用 BrowserAct 从 Google Sheets 向多个招聘网站发布职位

高级

这是一个HR领域的自动化工作流,包含 20 个节点。主要使用 If, Code, Slack, GoogleSheets, ManualTrigger 等节点。 使用 Google Sheets 和 BrowserAct 自动化多平台职位发布

前置要求
  • Slack Bot Token 或 Webhook URL
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "qMwMfHxAAddl6h5v",
  "meta": {
    "instanceId": "88804d8e264d231c18413147cc92e4245b20ae7b97d774bad847556f645c8192",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 BrowserAct 从 Google Sheets 向多个招聘网站发布职位",
  "tags": [],
  "nodes": [
    {
      "id": "5f1b282a-3d24-47ba-975e-8b665bd685cb",
      "name": "当点击\"执行工作流\"时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -592,
        -48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6e59bf13-7e4a-49c1-9fc5-7ef9bd9d7793",
      "name": "获取表格中的行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -400,
        -48
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1104319058,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit#gid=1104319058",
          "cachedResultName": "Job Example"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit?usp=drivesdk",
          "cachedResultName": "Test For BrowserAct"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "13fc2a7b-0c28-4f0c-b226-648bceca7536",
      "name": "运行工作流任务",
      "type": "n8n-nodes-browseract-workflows.browserAct",
      "position": [
        48,
        -64
      ],
      "parameters": {
        "workflowId": "56841107053416567",
        "inputParameters": {
          "parameters": [
            {
              "name": "Target_Site",
              "value": "={{ $json[\" Job_Board_URL\"] }}"
            },
            {
              "name": "Job_Title",
              "value": "={{ $json.Job_Title }}"
            },
            {
              "name": "Job_Description",
              "value": "={{ $json.Job_Description }}"
            },
            {
              "name": "Phone_Number",
              "value": "={{ $json.Phone_Number }}"
            },
            {
              "name": "Address",
              "value": "={{ $json.Address }}"
            },
            {
              "name": "tags",
              "value": "={{ $json.tags }}"
            },
            {
              "name": "Company",
              "value": "={{ $json.Company }}"
            },
            {
              "name": "Login_Username",
              "value": "={{ $json.Login_Username }}"
            },
            {
              "name": "Login_Password",
              "value": "={{ $json.Login_Password }}"
            }
          ]
        },
        "additionalFields": {
          "saveBrowserData": false
        }
      },
      "credentials": {
        "browserActApi": {
          "id": "AzKMhR2eAlOjzDiJ",
          "name": "BrowserAct account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3741a23f-a304-445b-895d-4dd7dfcc7ccc",
      "name": "获取工作流任务详情",
      "type": "n8n-nodes-browseract-workflows.browserAct",
      "onError": "continueErrorOutput",
      "position": [
        240,
        -64
      ],
      "parameters": {
        "taskId": "={{ $json.id }}",
        "operation": "getTask",
        "waitForFinish": true
      },
      "credentials": {
        "browserActApi": {
          "id": "AzKMhR2eAlOjzDiJ",
          "name": "BrowserAct account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1d84240b-6345-4186-bf93-c31023b0bc13",
      "name": "在表格中更新行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        912,
        -64
      ],
      "parameters": {
        "columns": {
          "value": {
            "Job_ID": "={{ $('Get row(s) in sheet').item.json.Job_ID }}",
            "Status": "={{ $json.Status }}",
            "Live_URL": "={{ $json.Url }}"
          },
          "schema": [
            {
              "id": "Job_ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Job_ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Posting_Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Posting_Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job_Title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Job_Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job_Description",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Job_Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": " Job_Board_URL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": " Job_Board_URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Login_Username",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Login_Username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Login_Password",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Login_Password",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone_Number",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Phone_Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Live_URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Live_URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Job_ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1104319058,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit#gid=1104319058",
          "cachedResultName": "Job Example"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit?usp=drivesdk",
          "cachedResultName": "Test For BrowserAct"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "bcf633ed-6dd3-406b-9943-896fe11b0683",
      "name": "JavaScript 代码",
      "type": "n8n-nodes-base.code",
      "position": [
        704,
        -64
      ],
      "parameters": {
        "jsCode": "// Get the JSON string using the exact path provided by the user.\nconst jsonString = $input.first().json.output.string;\n\nlet parsedData;\n\n// Check if the string exists before attempting to parse\nif (!jsonString) {\n    // Return an empty array or throw an error if no string is found\n    // Throwing an error is usually better to stop the workflow if data is missing.\n    throw new Error(\"Input string is empty or missing at the specified path: $input.first().json.output.string\");\n}\n\ntry {\n    // 1. Parse the JSON string into a JavaScript array of objects\n    parsedData = JSON.parse(jsonString);\n} catch (error) {\n    // Handle JSON parsing errors (e.g., if the string is malformed)\n    throw new Error(`Failed to parse JSON string: ${error.message}`);\n}\n\n// 2. Ensure the parsed data is an array\nif (!Array.isArray(parsedData)) {\n    throw new Error('Parsed data is not an array. It cannot be split into multiple items.');\n}\n\n// 3. Map the array of objects into the n8n item format { json: object }\n// Each element in this array will be treated as a new item by n8n, achieving the split.\nconst outputItems = parsedData.map(item => ({\n    json: item,\n}));\n\n// 4. Return the new array of items\nreturn outputItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "2b987dff-8293-4723-9ea8-455727441cd2",
      "name": "如果",
      "type": "n8n-nodes-base.if",
      "position": [
        -224,
        -48
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a33df146-1505-417b-ba35-fc3c7823e244",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Posting_Status }}",
              "rightValue": "Ready to Post"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "34fccf50-7241-4f56-ac8c-8df73c017618",
      "name": "Google Sheets触发器",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -400,
        96
      ],
      "parameters": {
        "event": "rowUpdate",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1104319058,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit#gid=1104319058",
          "cachedResultName": "Job Example"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit?usp=drivesdk",
          "cachedResultName": "Test For BrowserAct"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "id": "r1f3Ap74oZQWWxYy",
          "name": "Google Sheets Trigger account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "91723f53-45d3-45a8-b97c-1506acfb87ef",
      "name": "便利贴 - 介绍",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        -384
      ],
      "parameters": {
        "width": 528,
        "height": 450,
        "content": "## 立即试用!"
      },
      "typeVersion": 1
    },
    {
      "id": "a884ca62-a5b7-4115-9ef3-d04253d42862",
      "name": "便利贴 - 使用方法",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        80
      ],
      "parameters": {
        "width": 528,
        "height": 228,
        "content": "## 使用方法"
      },
      "typeVersion": 1
    },
    {
      "id": "5088b29a-d8e1-4b8d-9bdc-dfb676bb7c39",
      "name": "便利贴 - 需要帮助",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        320
      ],
      "parameters": {
        "width": 528,
        "height": 104,
        "content": "### 需要帮助?"
      },
      "typeVersion": 1
    },
    {
      "id": "b106ec53-560b-43ff-8b9e-8cfa9a8de7e9",
      "name": "便签 - 输入与触发器",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        -288
      ],
      "parameters": {
        "color": 6,
        "width": 416,
        "height": 208,
        "content": "### 🕹️ 1. 输入与触发器控制"
      },
      "typeVersion": 1
    },
    {
      "id": "7303bb7d-d6b8-4348-959c-39879435b4df",
      "name": "便签 - 自动化核心",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -288
      ],
      "parameters": {
        "color": 5,
        "width": 400,
        "height": 200,
        "content": "### 🤖 2. 自动化引擎"
      },
      "typeVersion": 1
    },
    {
      "id": "73af619d-f874-4e1b-94e0-c0bf9177c434",
      "name": "便签 - 反馈循环",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -288
      ],
      "parameters": {
        "color": 3,
        "width": 816,
        "height": 200,
        "content": "### 🔄 3. 反馈、更新与发送警报"
      },
      "typeVersion": 1
    },
    {
      "id": "d6f5713e-e7e1-483c-b4cb-e00875706ce3",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -80
      ],
      "parameters": {
        "color": 5,
        "width": 400,
        "height": 176,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "add8711a-864b-4b96-a0d1-97e4eb4af534",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        -64
      ],
      "parameters": {
        "color": 6,
        "width": 416,
        "height": 304,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "cd88ea7e-ce56-48ab-833d-8d8a67495b77",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -80
      ],
      "parameters": {
        "color": 3,
        "width": 816,
        "height": 288,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "5bf223b4-2ce4-44a2-9125-cf64c2bbea7f",
      "name": "发送消息",
      "type": "n8n-nodes-base.slack",
      "position": [
        1104,
        -64
      ],
      "webhookId": "01fb8ea5-9534-45f8-a069-7745ee2b8ec7",
      "parameters": {
        "text": "={{ $('Get row(s) in sheet').item.json.Job_ID }} added to Job List\nStatus : {{ $json.Status }}\n",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09KLV9DJSX",
          "cachedResultName": "all-browseract-workflow-test"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "5rQCkyObBqbHIbZA",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "9ee840f8-ac5f-4183-8a69-4acfd98cb2af",
      "name": "如果1",
      "type": "n8n-nodes-base.if",
      "position": [
        512,
        -64
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e2eb7caa-21f4-4095-8c78-19438adc085d",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.output.string }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b6fe8efd-74b1-4f33-84a6-0e79062bdb23",
      "name": "发送消息1",
      "type": "n8n-nodes-base.slack",
      "position": [
        704,
        64
      ],
      "webhookId": "01fb8ea5-9534-45f8-a069-7745ee2b8ec7",
      "parameters": {
        "text": "=Processing for Job ID {{ $('Get row(s) in sheet').item.json.Job_ID }} was skipped because an error occurred.\nStatus: Error. Please check the provided URL or data or Workflow for issues.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09KLV9DJSX",
          "cachedResultName": "all-browseract-workflow-test"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "5rQCkyObBqbHIbZA",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f5e47078-51b9-494f-92d3-5216436e01c0",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Run a workflow task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If1": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run a workflow task": {
      "main": [
        [
          {
            "node": "Get details of a workflow task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get details of a workflow task": {
      "main": [
        [
          {
            "node": "If1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 人力资源

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量20
分类1
节点类型8
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Madame AI Team | Kai

Madame AI Team | Kai

@madame-ai

I’m a PhD in Physics turned AI enthusiast, passionate about uncovering how AI is transforming content creation, business, and daily life.

外部链接
在 n8n.io 查看

分享此工作流