搜尋
清除搜尋內容
關閉搜尋框
Google 應用程式
主選單

變數

變數是「名稱-值」組合,其中值會在執行階段期間填入。舉例來說,系統已定義「url」這個預先定義變數,使其值等於目前的網頁網址。

變數會用於觸發條件和代碼。在觸發條件中,這些變數會用於定義篩選器,以便指定特定觸發條件的執行時機 (例如在網址變數為「example.com/index.html」時執行瀏覽量觸發條件)。在代碼中,變數會用於擷取動態值 (例如將交易值和購買的產品傳送到轉換追蹤代碼)。

在您所建立的每個網站或行動應用程式容器中,Google 代碼管理工具都提供了一組預先定義變數。透過這些變數,您就能建立最常用的代碼和觸發條件。不過,您也可以配合特定需求建立其他變數。

注意:內建變數是一種預先由 Google 代碼管理工具建立的特殊變數,可用來取代建立新容器時所產生的變數。這種變數啟用後就可供使用,用法和其他任何變數相同。內建變數包含多種基本與常用變數 (例如網址、參照網址、點擊編號、隨機號碼和事件);如想進一步瞭解內建變數,請參閱這篇文章

網站範例

假設您想在網站訪客消費超過新臺幣 $3,000 元時,啟用 Google 多媒體廣告聯播網再行銷代碼。若要這麼做,您可以建立並新增瀏覽量觸發條件:

交易金額高於新臺幣 $100 元

由於「交易金額」這個變數不存在,因此您必須加以定義。您必須指示 Google 代碼管理工具在 transactionAmt 這個 JavaScript 變數中找出交易金額的值 (假設 JavaScript 變數位於網站的購買確認網頁上)。

執行期間,Google 代碼管理工具會從指定的 JavaScript 變數中取得「交易金額」的值,然後,上述觸發條件將會評估值是否大於新臺幣 $100 元。

除了用於觸發條件中,「交易金額」還可用來將交易金額傳送到任何轉換追蹤標記 (例如 DoubleClick Floodlight 代碼)。這樣一來,DoubleClick 報表就能顯示交易收益。

網頁適用的變數類型

第一方 Cookie:這個值會是第一方 Cookie,且名稱與使用者目前所在的網域相同。如果您在同一網域的多個路徑或多個層級上部署同名的 Cookie,系統會選用第一個值。如果您在網頁內呼叫了 document.cookie 並選用第一個結果,情況也是這樣。

內建變數:這是一組預先建立且無法自訂的常用特殊變數,可供您選來顯示在 Google 代碼管理工具中。瞭解詳情

常值字串:其值將是您所提供的字串。由於這個字串永遠會保持不變,且是您在這裡提供的字串,因此「常值字串」變數類型的用途並不多。不過,如果您想要設定整個網站上通用的標準公司名稱,就可以將這個名稱定義為「常值字串」類型變數。這樣一來,您就能在 Google 代碼管理工具中輕鬆更新字串,並且在使用這個變數的所有代碼中查看更新後的字串。

容器版本號碼:當容器處於預覽模式時,容器版本變數會傳回容器的預覽版本號碼;在其他狀況下,這個變數則會傳回容器的線上版本號碼。

自訂 JavaScript:其值將是 JavaScript 函數的運算結果。JavaScript 的形式必須是一個會傳回值的匿名函式。舉例來說,您可以撰寫一串名為「lowerUrl」的自訂 JavaScript 變數,並讓它搭配預先定義的 {{url}} 變數運作:

function () {
  return {{url}}.toLowerCase();
}

資料層變數:dataLayer.push({'Data Layer Name': 'value'}) 這串程式碼在您的網站上執行時,資料層變數會設為「value」。

在 Google 代碼管理工具中,您可以指定句點 (「.」) 在資料層變數名稱中的解讀方式:

  • 版本 1:允許鍵名包含句點。舉例來說,如果是 dataLayer.push('a.b.c': 'value'),您可以將鍵的名稱解讀為「a.b.c」(例如 {'a.b.c': 'value'})。
  • 版本 2:將句點視為巢狀值。舉例來說,您可以將 dataLayer.push({'a.b.c': 'value'}) 解讀為三個巢狀層級:{a: {b: {c: 'value'}}}。如此一來,您就可以讀取巢狀值;您可以將變數名稱設為「a.b」,這樣就會傳回物件 {c: 'value'} (根據標準 JavaScript 規則)。此外,採用巢狀推送的方式,您還可直接修改巢狀值;因此,如果您在網頁上執行:
    dataLayer.push({'a.b.c': 'value'});
    dataLayer.push({'a.b.d': 4});

    您的網頁上就會產生像 {a: {b: {c: 'value', d: 4}}} 的 dataLayer。

偵錯模式:如果是在偵錯模式下查看容器,值會設為 true。

DOM 元素:其值將是 DOM 元素的文字或指定 DOM 元素屬性的值。如果您尋找的值未在資料層中設定 (請見上述「資料層」變數類型),可能是因為這個值可以從 DOM 中擷取。如果您可以藉由輸入元素編號屬性值的方式在 DOM 中找到所需值,請使用這個巨集類型。

如果已設定選填屬性名稱,變數值將會傳回該屬性中指定的值 (例如 data-food="cupcakes");否則,變數值將是 DOM 元素內的文字。

HTTP 參照網址:其值將是 HTTP 參照網址,也就是使用者先前造訪的網頁。舉例來說,如果使用者從首頁連到您的產品網頁,參照網址就是首頁。Google 代碼管理工具會自動建立這個變數類型的例項,但如果您想要呈現參照網址的其他部分,也可以建立其他例項。

JavaScript 變數:其值將是您指定的全域變數。如果您所需的值並非在資料層中設定 (請見「資料層」變數類型),也沒有顯示在 DOM 中 (請見 DOM 元素變數類型),您或許可以在 JavaScript 變數中擷取這個值。如果您可以在網頁原始碼中找到所需值 (且格式為 JavaScript 變數),請使用這個變數類型。

對照表:這個值將根據對照表中的指示設定。對照表包含兩個資料欄 (使用空白對照表說明資料之後的使用方式)

當 [選取變數] 等於

將 [這個變數] 設為

   

使用對照表類型來建立變數時,變數的值會因為另一個變數的值而變動。如果您網站的設定方式能夠將適當的值 (例如轉換追蹤編號) 對應到網址或網頁的其他部分,就很適合使用這個方式來建立變數。在下列範例中,我們建立了一個名為「轉換編號」的變數;如果網址是「/thanks/buy1.html」,值會設為「12345」;網址是「thanks/buy2.html」的時候,值則是「34567」。對照表中的列數不限,但欄位必須區分大小寫。

當 {{url}} 等於

將 {{轉換編號}} 設為

http://example.com/thanks/buy1.html

12345

http://example.com/thanks/buy2.html

34567

http://example.com/thanks/buy3.html

56789

隨機號碼:這個值是介於 0 到 2147483647 之間的隨機數字。

內建變數:某些網頁上事件 (例如連結點擊、元素點擊、表單提交等) 發生時,Google 代碼管理工具會自動填入這些變數。瞭解詳情

網址:這個類型的變數用來剖析及呈現網址元件。Google 代碼管理工具會自動建立這個變數類型的 3 個例項 (完整網址、主機名稱和路徑)。您可以建立其他例項來呈現網址的其他部分。可選擇的網址元件如下:「通訊協定」、「主機名稱」、「通訊埠」、「路徑」、「查詢」及「片段」。這類變數的輸入值組合為使用者目前所在網頁的網址 (擷取自 document.location)。您可以藉著調整「網址來源」設定,讓 Google 代碼管理工具使用其他變數做為網址值的來源。

行動應用程式適用的變數類型

 

廣告追蹤功能已啟用:如果是 Android 行動應用程式、而且已啟用廣告追蹤功能,變數會傳回 true,若使用者已停用按照興趣顯示的廣告,則會傳回 false;相關詳情請參閱 Android 開發人員中心的內容。第 4 版以前的 SDK 一律會傳回 false。如果是 iOS 6 以上版本,這個值將是 advertisingTrackingEnabled 資源,若是其他版本,值則設為 true。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

應用程式編號:這個值將是套件名稱 (Android) 或套件組合 ID (iOS)。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

應用程式名稱:這個值將是目前所執行應用程式的名稱。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

應用程式版本程式碼:這個值將是目前所執行應用程式的版本。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

常值字串:這個值將是您提供的字串。

容器編號:這個值將是容器的公開編號 (例如 GTM-ABC42)。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

容器版本號碼:當容器處於預覽模式時,這個變數值是容器的預覽版本號碼,不是預覽模式時,變數值則是容器的上線版本號碼。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

裝置編號:如果是 Android,這個值會設為裝置編號,若是舊版 iOS 容器,則會設為 '' (空白字串)。Firebase (iOS) 容器中不提供這項變數,但行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

裝置名稱:這個值將是目前執行應用程式的裝置名稱 (例如「Samsung Android」、「Android SDK built for x86」)。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

事件名稱:以下程式碼在應用程式中執行時,這個值會是「eventNameXYZ」:

Android:
FirebaseAnalytics.getInstance(mContext).logEvent("eventNameXYZ", null);

iOS:
[FIRAnalytics logEventWithName:@"eventNameXYZ" parameters:parameters];

行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

事件參數:這個值將是系統為鍵記錄的 Firebase Analytics 事件參數值。

Firebase 使用者資源:這個值將是鍵的 Firebase Analytics 使用者資源值。

函式呼叫:這個值將是預先註冊函式呼叫的傳回值,詳情請參閱 SDK 文件 (AndroidiOS 版本)。

廣告編號:如果是 Android,這個值將是「廣告 ID」,相關詳情請參閱 Android 開發人員中心的內容;第 4 版以前的 SDK 一律會傳回 '' (空白字串)。如果是 iOS 6 以上的版本,這個值會是廣告識別碼 (IDFA),若是 iOS 6 以下的版本,值則是 '' (空白字串)。

語言:其值將是兩個字母組成的語言代碼,代表使用者設定的裝置語言。行動應用程式容器中提供這個類型的預先定義變數,因此您不需要定義這種新變數。

對照表:這個值將根據對照表中的指示設定。對照表包含兩個資料欄 (使用空白對照表說明資料之後的使用方式)

當 [選取變數] 等於

將 [這個變數] 設為

   

使用對照表類型來建立變數時,變數的值會因為另一個變數的值而變動。如果您應用程式的設定方式可將適當的值 (例如轉換追蹤編號) 對應到應用程式版本代碼或應用程式的其他部分,就適合使用這個方式來建立變數。在下列範例中,我們建立了一個名為「轉換編號」的變數;如果應用程式版本代碼為 1.0,值就會設為「12345」;若代碼為 1.1,值則會設為「34567」。對照表中的列數不限,但欄位必須區分大小寫。

如果 {{應用程式版本代碼}} 為

將 {{轉換編號}} 設為

1.0

12345

1.1

34567

1.2

56789

作業系統版本:這個值將是安裝應用程式的作業系統版本。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

平台:這個值將是目前正在執行的應用程式所用的平台 (例如「Android」)。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

隨機號碼:其值將是 0 到 2147483647 之間的隨機數字。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

畫面解析度:這個值將是目前執行應用程式的裝置螢幕解析度,格式為「<寬>x<高>」(例如「1024x768」)。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

SDK 版本:這個值將是安裝了應用程式的作業系統 SDK 版本。行動應用程式容器中提供這個類型的內建變數,因此您不需要定義這種新變數。

作業系統版本:這個值將是安裝應用程式的作業系統版本。

平台:其值將是目前執行應用程式的平台 (例如「Android」或「iOS」)。行動應用程式容器中提供這個類型的預先定義變數,因此您不需要定義這種新變數。

隨機號碼:其值將是 0 到 2147483647 之間的隨機數字。

畫面解析度:這個值將是目前執行應用程式的裝置螢幕解析度,格式為「寬 x 高」(例如「1024x768」)。行動應用程式容器中提供這個類型的預先定義變數,因此您不需要定義這種新變數。

SDK 版本:這個值將是安裝了應用程式的作業系統 SDK 版本。行動應用程式容器中提供這個類型的預先定義變數,因此您不需要定義這種新變數。

舊版值組合

值組合 (僅適用於舊版容器):這個變數包含 JSON 格式的鍵/值對。您必須使用值組合來設定應用程式的設定值。以賽車遊戲應用程式為例,您可以使用下列方式定義類型為值組合的「應用程式設定」變數:


{
  "max-fuel": 200,
  "starting-fuel": 100,
  "fuel-burn-rate": 20
}

行動應用程式可藉由提供鍵來擷取變數中的值,例如:


public class MainActivity {

  // 加入您的公開容器編號。
  private static final String CONTAINER_ID = "XXX-YYY"; 
  
  // 容器設定值鍵,之後可用來
  // 擷取值。
  private static final String MAX_FUEL_KEY = "max-fuel";
  private static final String INIT_FUEL_KEY = "init-fuel";
  private static final String FUEL_BURN_KEY = "fuel-burn-rate";

  // 其他的 onCreate 程式碼。
  }
}

/*
* 使用 Google 代碼管理工具容器
* 更新遊戲設定值的方法。
*/
public void updateConfigurationFromContainer(Container container) {

  // 取得容器參照。
  Container container = mFutureContainer.get();

  // 使用容器設定值鍵
  // 更新遊戲設定。
  maxFuel = mContainer.getDoubleValue(MAX_FUEL_KEY);
  startingFuel = mContainer.getDoubleValue(INIT_FUEL_KEY);
  burnRate = mContainer.getDoubleValue(FUEL_BURN_KEY);
}

「值組合」變數有相關的觸發條件;如果是可套用到應用程式所有執行個體和版本的設定值,請將啟用觸發條件設為預先定義的「一律」。若要進一步瞭解如何使用「值組合」變數,請視需求參閱 AndroidiOS 版本的開發人員說明文件。

 

這篇文章實用嗎?
我們應如何改進呢?