我不知道為什麼我只得到 19 個結果!!!
{
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://places.googleapis.com/v1/places:searchText",
"sendQuery": true,
"queryParameters": {
"parameters": []
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "X-Goog-Api-Key",
"value": "AIzhgyAKbwjkbdRrqJiMWI1ZqqEnWqf9W1LGdQo"
},
{
"name": "X-Goog-FieldMask",
"value": "places.displayName,places.formattedAddress,places.websiteUri,places.nationalPhoneNumber"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\n \"textQuery\": \"Restaurant München\"\n }\n",
"options": {
"pagination": {
"pagination": {
"parameters": {
"parameters": [
{
"type": "body",
"name": "pagetoken",
"value": "={{ $response.body.nextPageToken }}"
}
]
},
"paginationCompleteWhen": "other",
"completeExpression": "={{ !$response.body.nextPageToken }}",
"limitPagesFetched": true,
"maxRequests": 3,
"requestInterval": 500
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
-320,
16
],
"id": "8af51d58-7828-455c-9592-af448f86d285",
"name": "HTTP Request",
"notesInFlow": false
}
],
"connections": {
"HTTP Request": {
"main": [
[]
]
}
},
"pinData": {},
"meta": {
"instanceId": "b8fdb2752f65c0bd29637aecfeb8c7d18f76e636899d8f68c0d1b34ea045ef3d"
}
}```
歡迎來到 n8n 社群 @SuperNoobStarter
請檢查您分頁的 body 設定是否正確。
嗨 @SuperNoobStarter
你卡在大約 20 筆結果的原因是,Google 只會分批發送數據。要取得下一組結果,n8n 需要從 Google 取得一個叫做「token」的特殊數位金鑰。目前你的設定無法取得這個金鑰,也無法正確使用它,所以 n8n 認為在第一頁之後就已經到達列表末尾了。
首先,你必須明確要求 Google 發送這個金鑰。在你的設定中,有一個「Field Mask」標題欄位,你可以在那裡列出想要的資訊(例如電話號碼和地址)。因為你沒有在那個列表中包含「nextPageToken」,Google 就直接在回應中省略了這個金鑰,讓 n8n 無法要求第二頁的資料。
其次,你的分頁設定中有一個小拼寫錯誤。你寫的是全小寫的「pagetoken」,但 Google 要求很嚴格,需要大寫的「T」(「pageToken」)。因為這個拼寫錯誤,Google 會忽略請求更多數據的要求。一旦你修正標題欄和大寫字母,你就會開始看到更多結果,不過如果你想要超過 60 筆的總結果,可能還需要增加「max requests」的限制。
以下是修正後的 JSON。你可以複製這個並直接貼到你的 n8n 工作流畫布上。
備註:我將 maxRequests 增加到 10(而不是 3),這樣你可以最多取得 200 筆結果。你可以根據你需要的餐廳數量調整這個數字
嗨!
非常感謝你的詳細回答!
我會直接試試看!抱歉問了這麼菜的問題,但我真的在網路上搜尋過才問的!如果成功的話我會告訴你!
☆☆☆☆☆ 很棒的回答!我送你一些正能量:wink:
!!!祝你有美好的一天!!!
我犯了個錯誤!我在尋找沒有網站的企業。
我需要輸入什麼?WebsiteUri=null 之類的嗎?
謝謝!
嗨 @SuperNoobStarter
首先,你看到重複的資料是因為你設置了太多個節點。n8n 中的 HTTP Request 節點具有內建的分頁功能,可以自動處理「下一頁」的令牌。通過將三個相同的節點串聯在一起,你實際上是在告訴 n8n 分別從第一頁開始進行三次搜尋。你只需要一個單一的 HTTP Request 節點就能取得所有結果。
其次,你無法要求 Google API 只顯示沒有網站的商家;該 API 根本沒有「null」或「empty」篩選器。要實現這個目標,你必須先下載所有結果,然後使用 n8n 的「Filter」節點。該節點會查看列表並刪除任何有網站的商家,只保留沒有網站的商家。
最後,存在一個 嚴重的安全風險:你不小心在訊息中分享了你的 Google API 金鑰。既然這個金鑰現在已公開,任何人都可以使用它並向你的帳戶收取費用。你必須 立即 進入你的 Google Cloud Console,刪除該特定金鑰,並建立一個新的金鑰來保護你的帳戶安全。
請試試這個:
至關重要:我已將你洩露的 API 金鑰替換為佔位符 YOUR_NEW_API_KEY。你必須將其替換為在 Google Cloud Console 中產生的新金鑰。
非常感謝!我刪除了 API 並重新建立了一個新的!我也會試試工作流程,並做一些小調整!感謝你花時間和付出的努力!
我現在得到 60 個結果…這是朝正確的方向發展 :-)!
我有一個條目的 WebsiteUri 未定義,想要過濾掉它!我附上了一張截圖,顯示我是如何嘗試的!但我好像做錯了什麼!也許你可以最後再幫我一次?我該如何獲得更多結果?謝謝 
你的篩選條件之所以無法運作,是因為你告訴 n8n 去尋找實際寫成文字的單詞「undefined」。在數據的世界中,「undefined」不是一個詞彙——它是一種表示資訊完全遺失的狀態。由於網站欄位是空的,而不是包含文字「undefined」,所以篩選條件會忽略它。要修復此問題,請將運算子從「contains」變更為「Is Empty」。這會告訴 n8n 保留網站欄位遺失、為空值或為空白的任何內容。
關於你的結果,Google 一次以「頁面」的形式發送 20 個商家的數據。你的截圖顯示你在一個結果中有 19 或 20 個地點,這是 Google 每頁允許的最大值。你的分頁設定實際上是正確的,但 Google 對單次搜尋會顯示的總結果數量有硬性限制(通常約 60 個)。如果你達到了該限制,nextPageToken 將直接消失,搜尋也將停止。
要取得超過該限制的更多結果,你無法簡單地變更設定;你必須通過更具體的搜尋來「欺騙」API。與其搜尋「Restaurant München」,不如嘗試搜尋特定的鄰里(例如「Restaurant Maxvorstadt München」或「Restaurant Schwabing München」)。藉由將一個大型搜尋分解為多個較小的、以位置為基礎的搜尋,你可以繞過 60 個結果的限制,並蒐集數百個商家。
以下是改進的工作流程
***提醒:***請將 YOUR_NEW_API_KEY 替換為你的新金鑰。
哇!酷!你真是個高手!我午睡後再來搞定!再次感謝!
N8n 對初學者來說真的很複雜,所以我很慶幸有你這樣的人!超級佩服!
拜!
我嘗試了各種方式和調整。
我找不到辦法將它分割出來 ;-(… 拜託幫忙 ;-01
試試這個:
1)移除 fx 運算式。
2)點擊該欄位,然後從下拉式選單(變數選擇器)中選擇 websiteUri,而不是在運算式方塊中輸入。
3)將運算子保持為「為空」。
你好,歡迎!這裡有兩個問題。首先,JSON 區分大小寫,pagetoken 和 pageToken 是完全不同的東西。Google 只認識 pageToken(T 大寫),所以它會忽略發送的令牌,每次都只返回第一頁。
其次,Google 的 Places API 需要大約 2 秒鐘後頁面令牌才能生效,500 毫秒太快了,令牌會被無聲地拒絕。
感謝你的詳細回應!我會把你的建議應用到我的工作流程中!
祝好!