為標記啟用區域專屬行為

本文適用於從自有伺服器提供 Google 指令碼的開發人員。建議您為代碼啟用特定區域的行為,以解鎖進階同意聲明模式等功能,並根據使用者所在位置控管代碼行為。

如果您從第一方網域提供指令碼,則應在要求標頭中提供使用者的地理位置資訊,才能使用 event_location.countryevent_location.region 參數。如果要求標頭中提供 IP 位址,系統會優先使用該位址判斷地理位置。否則,系統會使用 event_location.countryevent_location.region 參數分別傳送國家/地區資訊。

事前準備

請務必先完成下列事項,再按照本指南的說明操作:

步驟 1:設定要求標頭

您必須傳送含有使用者區域資訊的特定要求標頭,詳情請參閱下文。

如果符合下列條件,可以直接從步驟 2 開始:

  • 您使用 App Engine。App Engine 會自動傳送地理位置標頭。
  • 您使用的基礎架構供應商與下方列出的不同。您需要設定自訂標頭

搭配 GCP 負載平衡器的 Cloud Run

您可以透過所有 HTTP 要求標頭傳送地理位置資訊,也可以針對特定要求傳送。新增自訂要求標頭會產生費用,每 100 萬次要求計費一次,因此建議只在放送 Google 指令碼的要求中加入地理位置資訊。這個選項一開始需要較多設定,但可協助您以最經濟實惠的方式執行基礎架構。

指令碼要求

如要只為指令碼要求加入地理位置標頭,您需要設定新的後端並建立轉送規則。

如要建立新的後端,請按照下列步驟操作:

  1. 開啟 GCP 負載平衡器
  2. 在負載平衡器中,開啟「Backend configuration」(後端設定) 區段。建立新的後端服務。
    後端設定的螢幕截圖
  3. 設定新的後端服務:
    • 「後端類型」:選擇應用程式使用的網路端點群組類型。如果您使用 Cloud Run,請選擇「無伺服器網路端點群組」
    • 在「New backend」(新增後端) 中,選擇伺服器端代碼管理工具部署作業的網路端點群組。
      新後端服務的螢幕截圖
  4. 開啟「進階設定」部分。新增自訂要求標頭。
    標頭名稱 標頭值
    X-Gclb-Country {client_region}
    X-Gclb-Region {client_region_subdivision}
  5. 儲存新的後端服務。

如要設定轉送規則,請按照下列步驟操作:

  1. 在負載平衡器中,開啟「Routing rules」(轉送規則) 部分。 選擇「進階型主機路徑與規則」 模式。
  2. 更新 pathRules 參數,將 gtm.js/gtag/js/gtag/destination 對應至新的後端服務。
    pathRules:
    - paths:
      - /gtm.js
      - /gtag*
      service: projects/project_id/global/backendServices/new backend service
    - paths:
      - /*
      service: projects/project_id/global/backendServices/original backend service
  3. 儲存變更。

所有要求

如要透過所有 HTTP 要求傳送地理位置資訊,您必須在現有的後端服務中新增自訂要求標頭,請參閱 Google Cloud 說明文件。 為下列每個標頭建立一個新的自訂要求標頭

標頭名稱 標頭值
X-Gclb-Country {client_region}
X-Gclb-Country {client_region_subdivision}

GCP 負載平衡器

您可以透過所有 HTTP 要求標頭傳送地理位置資訊,也可以針對特定要求傳送。新增自訂要求標頭會產生費用,每 100 萬次要求計費一次,因此建議只在放送 Google 指令碼的要求中加入地理位置資訊。這個選項一開始需要較多設定,但可協助您以最經濟實惠的方式執行基礎架構。

指令碼要求

如要只為指令碼要求加入地理位置標頭,您需要設定新的後端並建立轉送規則。

如要建立新的後端,請按照下列步驟操作:

  1. 開啟 GCP 負載平衡器
  2. 在負載平衡器中,開啟「Backend configuration」(後端設定) 區段。建立新的後端服務。
    後端設定的螢幕截圖
  3. 設定新的後端服務:
    • 「後端類型」:選擇應用程式使用的網路端點群組類型。如果您使用 Cloud Run,請選擇「無伺服器網路端點群組」
    • 在「New backend」(新增後端) 中,選擇伺服器端代碼管理工具部署作業的網路端點群組。
      新後端服務的螢幕截圖
  4. 開啟「進階設定」部分。新增自訂要求標頭。
    標頭名稱 標頭值
    X-Gclb-Country {client_region}
    X-Gclb-Region {client_region_subdivision}
  5. 儲存新的後端服務。

如要設定轉送規則,請按照下列步驟操作:

  1. 在負載平衡器中,開啟「Routing rules」(轉送規則) 部分。 選擇「進階型主機路徑與規則」 模式。
  2. 更新 pathRules 參數,將 gtm.js/gtag/js/gtag/destination 對應至新的後端服務。
    pathRules:
    - paths:
      - /gtm.js
      - /gtag*
      service: projects/project_id/global/backendServices/new backend service
    - paths:
      - /*
      service: projects/project_id/global/backendServices/original backend service
  3. 儲存變更。

所有要求

如要透過所有 HTTP 要求傳送地理位置資訊,您必須在現有的後端服務中新增自訂要求標頭,請參閱 Google Cloud 說明文件。 為下列每個標頭建立一個新的自訂要求標頭

標頭名稱 標頭值
X-Gclb-Country {client_region}
X-Gclb-Country {client_region_subdivision}

Amazon Web Services (AWS) CloudFront

建立來源要求政策,將 CloudFront-Viewer-CountryCloudFront-Viewer-Country-Region 標頭新增至要求。

系統會自動新增下列標頭及其值:

標頭名稱 標頭值
CloudFront-Viewer-Country 使用者所在的國家/地區
CloudFront-Viewer-Country-Region 使用者的細分區域
AWS CloudFront 中的標頭設定

Azure Front Door

使用 規則引擎建立規則集,並使用 修改要求標頭動作,以及下列對應:

標頭名稱 標頭值
X-Azure-Country {geo_country}
Azure Front Door 設定的螢幕截圖

Cloudflare

受管理轉換部分中,啟用「新增訪客位置標頭」:

系統會自動新增下列標頭及其值:

標頭名稱 標頭值
CF-IPCountry 使用者所在的國家/地區
Cloudflare 設定的螢幕截圖

步驟 2:設定訪客區域變數

如已按照上述方式設定地理位置標頭,代碼管理工具會讀取 HTTP 要求標頭,自動偵測區域或國家/地區。或者,您也可以設定自訂標頭。

自動偵測

  1. 開啟 Google 代碼管理工具
  2. 開啟伺服器容器。
  3. 在「變數」選單中,設定內建變數清單。
  4. 選取「訪客區域」

現在您可以在「訪客區域」變數中使用地理位置標頭。

自訂標頭

  1. 開啟 Google 代碼管理工具
  2. 開啟伺服器容器。
  3. 在「變數」選單中,建立類型為「訪客區域」使用者定義變數。
  4. 在「變數設定」中,選擇「自訂變數」
  5. 在「變數」選單中,建立兩個新的「要求標頭」變數:一個用於國家/地區,另一個用於子區域代碼。在 HTTP 要求標頭中填入國家/地區代碼。

  6. 在「訪客區域」變數中使用您建立的變數,如螢幕截圖所示。

    變數設定的螢幕截圖

  7. 為變數命名並按一下「儲存」

步驟 3:在用戶端中啟用區域專用設定

如要使用訪客區域處理傳入的 HTTP 要求,您必須將該區域新增至用戶端。

  1. 選取「Google 代碼管理工具:網站容器」用戶端。

  2. 勾選「啟用區域專用設定」。將您在上一個步驟中建立的 {{Visitor Region}} 變數新增至「區域」欄位。

  3. 按一下「儲存」即可儲存客戶。

步驟 4:確認已套用區域設定

如要測試設定是否正常運作,請按照下列步驟操作:

  1. 開啟伺服器容器的預覽模式
  2. 使用第一方放送功能載入網站。
  3. 在預覽視窗中,按一下「已聲明」Google Analytics 4 (GA4) 用戶端。 用戶端螢幕截圖
  4. 如要查看實際區域,請將「Display Variables」(顯示變數) 單選按鈕變更為值。訪客區域欄位的螢幕截圖
    • ✅ 如果「區域」屬性顯示國家/地區代碼,表示導入作業正確無誤。
    • ❌ 如果「區域」屬性顯示 undefined 或缺少資料,表示伺服器未收到任何區域資料。檢查伺服器的 HTTP 標頭是否已根據 Google 代碼管理工具要尋找的預先定義變數設定,請參閱「設定要求標頭」。

後續步驟