8
n8n 中文网amn8n.com

从 Google Maps 和 Places API 生成商业线索到 Google Sheets

中级

这是一个Lead Generation领域的自动化工作流,包含 12 个节点。主要使用 If, Set, SplitOut, FormTrigger, HttpRequest 等节点。 从 Google Maps 和 Places API 生成商业线索到 Google Sheets

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "58a9e858b82757a75629d435ec0da2448ad5d9e906a9ce3b7dcbb64c90fda9fe",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "9e017f9b-517c-4e4d-b887-26bd694d1f4b",
      "name": "获取位置坐标",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1248,
        144
      ],
      "parameters": {
        "url": "https://maps.googleapis.com/maps/api/geocode/json",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "address",
              "value": "={{ $json.location }}"
            },
            {
              "name": "key",
              "value": "={{ $json.googleApiKey }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0dce7f8f-7df8-4a84-94e4-a45443c2d93e",
      "name": "搜索 Google Places",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1696,
        144
      ],
      "parameters": {
        "url": "https://places.googleapis.com/v1/places:searchText",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"textQuery\": \"{{ $json.businessType }}\",\n  \"locationBias\": {\n    \"circle\": {\n      \"center\": {\n        \"latitude\": {{ $json.latitude }},\n        \"longitude\": {{ $json.longitude }}\n      },\n      \"radius\": 10000\n    }\n  },\n  \"maxResultCount\": {{ $json.maxResults }}\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Goog-Api-Key",
              "value": "={{ $json.googleApiKey }}"
            },
            {
              "name": "X-Goog-FieldMask",
              "value": "places.displayName,places.formattedAddress,places.nationalPhoneNumber,places.internationalPhoneNumber,places.websiteUri,places.googleMapsUri,places.rating,places.userRatingCount,places.businessStatus,places.types,places.id"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c0002a96-8e2c-4b07-bf5a-4c0d8c6f3b5a",
      "name": "分割结果",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1920,
        144
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "places"
      },
      "typeVersion": 1
    },
    {
      "id": "576b96c6-82cd-4bc3-8553-4360c5083f42",
      "name": "格式化潜在客户数据",
      "type": "n8n-nodes-base.set",
      "position": [
        2368,
        144
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "name_assignment",
              "name": "businessName",
              "type": "string",
              "value": "={{ $json.displayName?.text || 'N/A' }}"
            },
            {
              "id": "address_assignment",
              "name": "address",
              "type": "string",
              "value": "={{ $json.formattedAddress || 'N/A' }}"
            },
            {
              "id": "phone_assignment",
              "name": "phone",
              "type": "string",
              "value": "={{ $json.nationalPhoneNumber || $json.internationalPhoneNumber || 'N/A' }}"
            },
            {
              "id": "website_assignment",
              "name": "website",
              "type": "string",
              "value": "={{ $json.websiteUri || 'N/A' }}"
            },
            {
              "id": "gmaps_assignment",
              "name": "googleMapsUrl",
              "type": "string",
              "value": "={{ $json.googleMapsUri || 'N/A' }}"
            },
            {
              "id": "rating_assignment",
              "name": "rating",
              "type": "string",
              "value": "={{ $json.rating || 'N/A' }}"
            },
            {
              "id": "reviews_assignment",
              "name": "totalReviews",
              "type": "number",
              "value": "={{ $json.userRatingCount || 0 }}"
            },
            {
              "id": "status_assignment",
              "name": "businessStatus",
              "type": "string",
              "value": "={{ $json.businessStatus || 'UNKNOWN' }}"
            },
            {
              "id": "types_assignment",
              "name": "businessTypes",
              "type": "string",
              "value": "={{ $json.types?.join(', ') || 'N/A' }}"
            },
            {
              "id": "place_assignment",
              "name": "placeId",
              "type": "string",
              "value": "={{ $json.id || 'N/A' }}"
            },
            {
              "id": "search_assignment",
              "name": "searchQuery",
              "type": "string",
              "value": "={{ $('Prepare Search Data Set').item.json.businessType }}"
            },
            {
              "id": "search_location_assignment",
              "name": "searchLocation",
              "type": "string",
              "value": "={{ $('Prepare Search Data Set').item.json.locationName }}"
            },
            {
              "id": "timestamp_assignment",
              "name": "scrapedAt",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a3cc811c-b586-4adf-8e15-840c0bbc913c",
      "name": "提取配置",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        800,
        144
      ],
      "webhookId": "0257ee5d-0603-4bf5-92cf-7fc446f6c928",
      "parameters": {
        "options": {},
        "formTitle": "Generate Leads",
        "formFields": {
          "values": [
            {
              "fieldLabel": "What is the Search Term?",
              "requiredField": true
            },
            {
              "fieldLabel": "What is your Location?",
              "requiredField": true
            },
            {
              "fieldType": "number",
              "fieldLabel": "Max Results?",
              "requiredField": true
            },
            {
              "fieldLabel": "Google Maps API Key"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "2cd4749f-118e-41ae-899f-19ccde3b2dfe",
      "name": "主集合",
      "type": "n8n-nodes-base.set",
      "position": [
        1024,
        144
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0ce4b0e7-3ce5-4b38-bc49-9fd58be31e3b",
              "name": "location",
              "type": "string",
              "value": "={{ $json['What is your Location?'] }}"
            },
            {
              "id": "83741282-8c5d-46fa-9f3b-7065bf2bb4eb",
              "name": "googleApiKey",
              "type": "string",
              "value": "={{ $json['Google Maps API Key'] }}"
            },
            {
              "id": "be691e08-0b6b-43d8-8ec8-a50481618c94",
              "name": "maxResults",
              "type": "string",
              "value": "={{ $json['Max Results?'] }}"
            },
            {
              "id": "6f4b30a2-e0fb-40d5-a00b-6bf4c80494e3",
              "name": "businessType",
              "type": "string",
              "value": "={{ $json['What is the Search Term?'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "44c4721a-4609-4ea2-8aa1-73ee4286cd8d",
      "name": "准备搜索数据集",
      "type": "n8n-nodes-base.set",
      "position": [
        1472,
        144
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "lat_assignment",
              "name": "latitude",
              "type": "number",
              "value": "={{ $json.results[0].geometry.location.lat }}"
            },
            {
              "id": "lng_assignment",
              "name": "longitude",
              "type": "number",
              "value": "={{ $json.results[0].geometry.location.lng }}"
            },
            {
              "id": "business_assignment",
              "name": "businessType",
              "type": "string",
              "value": "={{ $('Main Set').item.json.businessType }}"
            },
            {
              "id": "api_assignment",
              "name": "googleApiKey",
              "type": "string",
              "value": "={{ $('Main Set').item.json.googleApiKey }}"
            },
            {
              "id": "max_assignment",
              "name": "maxResults",
              "type": "string",
              "value": "={{ $('Main Set').item.json.maxResults }}"
            },
            {
              "id": "location_assignment",
              "name": "locationName",
              "type": "string",
              "value": "={{ $('Main Set').item.json.location }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e0b810cf-2146-47dd-8800-c9a7f866e7fc",
      "name": "如果潜在客户有效",
      "type": "n8n-nodes-base.if",
      "position": [
        2144,
        144
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "3f7e701a-3b1e-4f4a-b47f-63e832d8b01a",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.nationalPhoneNumber }}",
              "rightValue": ""
            },
            {
              "id": "2cebb6b9-d612-46da-b541-bb58a00a15b4",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.websiteUri }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "82447bb9-f0a8-45fa-bba5-96c93a7ffcbd",
      "name": "在表格中追加行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2592,
        144
      ],
      "parameters": {
        "columns": {
          "value": {
            "Phone": "={{ $json.phone }}",
            "Rating": "={{ $json.rating }}",
            "Address": "={{ $json.address }}",
            "Website": "={{ $json.website }}",
            "Place ID": "={{ $json.placeId }}",
            "Scraped At": "={{ $json.scrapedAt }}",
            "Search Query": "={{ $json.searchQuery }}",
            "Business Name": "={{ $json.businessName }}",
            "Total Reviews": "={{ $json.totalReviews }}",
            "Business Types": "={{ $json.businessTypes }}",
            "Business Status": "={{ $json.businessStatus }}",
            "Google Maps URL": "={{ $json.googleMapsUrl }}",
            "Search location": "={{ $json.searchLocation }}"
          },
          "schema": [
            {
              "id": "Business Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Business Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Google Maps URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Google Maps URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Rating",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Reviews",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Total Reviews",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Business Types",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Business Types",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Business Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Business Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Place ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Place ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Search Query",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Search Query",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Search location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Search location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Scraped At",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Scraped At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1701dkUJszfL2ey5tC55NBMmN4CRHy2cmBC4gZqkk8eU/edit#gid=0",
          "cachedResultName": "Leads"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1701dkUJszfL2ey5tC55NBMmN4CRHy2cmBC4gZqkk8eU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1701dkUJszfL2ey5tC55NBMmN4CRHy2cmBC4gZqkk8eU/edit?usp=drivesdk",
          "cachedResultName": "Leads Generation"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "Gs7mfT220sbLQ7PS",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "a8c39d79-4fc0-49ec-b0e3-51ea9a48f9a6",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        -112
      ],
      "parameters": {
        "width": 624,
        "height": 176,
        "content": "## 从 Google Maps 生成潜在客户"
      },
      "typeVersion": 1
    },
    {
      "id": "b2ae012e-786d-4bfc-9ad8-755af1680c16",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1616,
        -112
      ],
      "parameters": {
        "color": 5,
        "width": 448,
        "height": 176,
        "content": "## 用户输入与搜索"
      },
      "typeVersion": 1
    },
    {
      "id": "15adb718-89ba-4b67-8075-ad51fcd47da2",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2256,
        -112
      ],
      "parameters": {
        "color": 4,
        "width": 448,
        "height": 176,
        "content": "## 潜在客户验证与存储"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Main Set": {
      "main": [
        [
          {
            "node": "Get Location Coordinates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Results": {
      "main": [
        [
          {
            "node": "If Lead is Valid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Lead Data": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Lead is Valid": {
      "main": [
        [
          {
            "node": "Format Lead Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extraction Configs": {
      "main": [
        [
          {
            "node": "Main Set",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Google Places": {
      "main": [
        [
          {
            "node": "Split Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Search Data Set": {
      "main": [
        [
          {
            "node": "Search Google Places",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Location Coordinates": {
      "main": [
        [
          {
            "node": "Prepare Search Data Set",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

中级 - 潜在客户开发

需要付费吗?

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

工作流信息
难度等级
中级
节点数量12
分类1
节点类型7
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

外部链接
在 n8n.io 查看

分享此工作流