使用位置資料

本教學課程將說明如何建立及編輯位置資料。My Business Business Information API 可讓您執行下列操作:

地點可用於廣告,但必須經過驗證,才能在搜尋聯播網和地圖上顯示。位置資料由 accounts.locations 集合代表。

事前準備

使用「我的商家」商家資訊 API 前,您必須先註冊應用程式並取得 OAuth 2.0 憑證。如要進一步瞭解如何開始使用 My Business Business Information API,請參閱「基本設定」。

建立地點

您可以使用 My Business Business Information API,透過 accounts.locations.create 為商家建立新地點。

如要建立位置,請使用下列指令:

HTTP
POST
https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?requestId=requestId&validateOnly=True|False

{
    "storeCode": "GOOG-SYD",
    "languageCode": "en-AU",
    "title": "Google Sydney",
    "phoneNumbers": {
      "primaryPhone": "02 9374 4000"
     }
    "storefrontAddress": {
      "addressLines": [
        "Level 5",
        "48 Pirrama Road"
      ],
      "locality": "Pyrmont",
      "postalCode": "2009",
      "administrativeArea": "NSW",
      "regionCode": "AU"
    },
    "websiteUri": "https://www.google.com.au/",
    "regularHours": {
      "periods": [
        {
          "openDay": "MONDAY",
          "closeDay": "MONDAY",
          "openTime": "09:00",
          "closeTime": "17:00"
        },
        {
          "openDay": "TUESDAY",
          "closeDay": "TUESDAY",
          "openTime": "09:00",
          "closeTime": "17:00"
        },
        {
          "openDay": "WEDNESDAY",
          "closeDay": "WEDNESDAY",
          "openTime": "09:00",
          "closeTime": "17:00"
        },
        {
          "openDay": "THURSDAY",
          "closeDay": "THURSDAY",
          "openTime": "09:00",
          "closeTime": "17:00"
        },
        {
          "openDay": "FRIDAY",
          "closeDay": "FRIDAY",
          "openTime": "09:00",
          "closeTime": "17:00"
        }
      ]
    },
    "categories": {
      "primaryCategory": {
        "name": "gcid:software_company"
      }
     }
}

刪除地點

您可以使用 My Business Business Information API 搭配 locations.delete 刪除地點。

如要刪除地點,請使用下列指令:

HTTP
DELETE
https://mybusinessbusinessinformation.googleapis.com/v1/locations/{locationId}

依名稱取得位置

如果您的帳戶與多家商家相關聯,建議您取得單一地點。您可以依商家名稱篩選,藉由 locations.get 取得特定地點。

如要依名稱取得地點,請使用下列指令。您必須指定 readMask,才能擷取特定欄位。:

HTTP
GET
https://mybusinessbusinessinformation.googleapis.com/v1/locations/{locationId}?readMask={commaSeparatedFieldsToRetrieve}

傳回 Google 地圖版本

HTTP

如要傳回 Google 地圖版本的位置資訊,請在要求網址中附加 googleUpdated,如以下範例所示:

GET
https://mybusinessbusinessinformation.googleapis.com/v1/locations/{locationId}:googleUpdated?readMask={commaSeparatedFieldsToRetrieve}

如果沒有結果,系統會傳回 404 NOT FOUND HTTP 狀態碼。如要進一步瞭解如何管理 Google 更新,請參閱這篇文章

列出位置

如果你管理一或多個地點,建議你列出與帳戶相關聯的所有地點。使用 accounts.locations.list API 列出與使用者相關聯的所有位置。

如要列出已驗證使用者直接擁有或管理的所有地點,請使用下列方法:

HTTP
GET
https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}

在要求網址中使用帳戶的 '-' 萬用字元,納入間接擁有的商家資訊 (透過群組擁有或管理):

HTTP
GET
https://mybusinessbusinessinformation.googleapis.com/v1/accounts/-/locations?readMask={commaSeparatedFieldsToRetrieve}

列出位置時篩選結果

HTTP

您可以使用篩選器限制呼叫 accounts.locations.list 時傳回的結果。如要篩選要求,請在基本網址後方加上篩選運算式,如以下範例所示:

GET
https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter={FIELD_NAME}=%22{YOUR_QUERY}%22

基本查詢語法

限制的語法如下:<field><operator><value>,其中運算子為 EQUALS (=) 或 HAS (:)。EQUALS (=) 和 HAS (:) 運算子在 locationName 以外的所有欄位都具有相同的效果 (請參閱下表)。

半形引號會編碼為「%22」,空格則會編碼為加號 (+)。

除非另有註明,否則所有比較都會區分大小寫符號。舉例來說,「4 drive」會與「4, Privet Drive」相符。

在篩選器查詢中組合多個欄位

API 允許 AND 連結所有欄位限制。不過,如果是 OR 關鍵字,則所有限制都必須套用至同一個欄位。例如:locationName=A OR labels=B 是禁止的。

範例

以下範例顯示篩選器運算式,可傳回名稱為「Pepé Le Pew」的所有地點。它會顯示「french_restaurant」或「european_restaurant」類別,以及「newly open」標籤。

locationName=%22Pepé+Le+Pew%22+AND+
(categories=%22french_restaurant%22+OR+
categories=%22european_restaurant%22)+AND+
labels=%22newly+open%22

依距離或帳戶搜尋

以下範例說明如何搜尋與地理位置點相距一定距離的區域:

HTTP
GET
https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=distance(latlng, geopoint({latitude}, {longitude}))<{distance}

如要篩選美國科羅拉多州博爾德以 1000 英里為半徑的範圍內位置,請按照下列步驟操作:

GET
https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=distance(latlng, geopoint(40.01, -105.27))<1000.0

所有支援的篩選器欄位清單

以下是可用於篩選的所有欄位完整清單:

欄位 說明和範例
字串比對欄位
title

商家實際名稱

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=title:"Bajis" (比對任何位置名稱,其中包含「Bajis」做為子字串)

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=title="Bajis" (與任何位置名稱相符,其中「Bajis」為符記/字詞)

categories

主要類別和其他類別的組合。 請注意,您必須省略「gcid:」。如果有多個類別,只要至少有一個類別符合這個模式,這個篩選器就會相符。

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=categories="french_restaurant"

phone_numbers.primary_phone

主要電話號碼,格式為 E.164 (例如:+441234567890)。

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=phone_numbers.primary_phone="+441234567890"

storefront_address.region_code

地址所在國家/地區的 CLDR 區域代碼

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=storefront_address.region_code="US"

storefront_address.administrative_area

最高行政區,用於國家/地區的郵遞地址

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=storefront_address.administrative_area="CA"

storefront_address.locality

地址的縣市/鄉鎮部分

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=storefront_address.locality="New York"

storefront_address.postal_code

地址的郵遞區號

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=storefront_address.postal_code="12345"

metadata.place_id

如果這個地點已通過驗證,且已連結至/顯示在 Google 地圖上,這個欄位就會等同於該地點的地點 ID

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=metadata.place_id="12345"

openInfo.status

指出位置目前是否營業 (OPENCLOSED_PERMANENTLY)

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=openInfo.status="OPEN"

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=openInfo.status="CLOSED_PERMANENTLY"

labels

一組自由格式字串,可用來標記商家。與其他所有欄位不同,這個值必須完全符合完整標籤 (包括大小寫),而非僅是符記。例如,如果標籤為「XX YY」,則「XX」或「xx yy」都不會相符。

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=labels="newly open"

storeCode

這個地點的外部 ID,必須在特定帳戶中不重複

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=storeCode="12345"

函式
distance

可讓您根據地點與地理位置點的距離進行篩選。

https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&filter=distance(latlng, geopoint(1.0, -25.0))<1000.0

依查詢欄位排序

您可以依商家名稱或商店代碼,以遞增或遞減順序排序結果。在 orderBy 字串中,多個排序條件會以逗號分隔,如以下範例所示:

HTTP
GET
https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{accountId}/locations?readMask={commaSeparatedFieldsToRetrieve}&orderBy=locationName,storeCode

修補位置

使用 My Business Business Information API,透過 locations.patch 更新地點的一或多個欄位。

如要變更一或多個地點欄位,請使用下列指令:

HTTP

使用位置欄位新增欄位和更新值,並使用以逗號分隔的更新欄位清單做為 fieldMask 的值。

PATCH
https://mybusinessbusinessinformation.googleapis.com/v1/locations/{locationId}?languageCode=language&validateOnly=True|False&updateMask=title
{
    "title": "Google Shoes"
}