Adobe 外掛程式:getPreviousValue

重要

此外掛程式由 Adobe Consulting 提供,協助您從 Adobe Analytics 中獲得更多價值。Adobe 客戶服務不提供此外掛程式的支援,包括安裝或疑難排解在內。如果您需要與此外掛程式有關的協助,請聯絡貴組織的客戶經理。客戶經理可安排您與顧問會面以尋求協助。

getPreviousValue 外掛程式可讓您將變數設定為先前點擊上設定的值。如果您的實施包含目前點擊中的所有所需值,就不需要此外掛程式。

使用 Adobe Experience Platform 中的標記安裝外掛程式

Adobe 提供一個擴充功能,可讓您使用最常用的外掛程式。

  1. 使用您的 Adobe ID 認證登入資料收集 UI
  2. 按一下所需的屬性。
  3. 前往擴充功能標記,然後按一下「目錄」按鈕
  4. 安裝並發佈常用 Analytics 外掛程式擴充功能
  5. 如果您尚未執行上述步驟,請使用下列設定建立標示為「初始化外掛程式」的規則:
    • 條件:無
    • 事件:核心 - 已載入資料庫 (頁面頂端)
  6. 使用下列設定將動作新增至上述規則:
    • 擴充功能:常用 Analytics 外掛程式
    • 動作類型:初始化 getPreviousValue
  7. 儲存並發佈規則的變更。

使用自訂程式碼編輯器安裝外掛程式

如果您不想使用外掛程式擴充功能,可以使用自訂程式碼編輯器。

  1. 使用您的 Adobe ID 認證登入資料收集 UI
  2. 按一下所需的屬性。
  3. 前往擴充功能標記,然後按一下 Adobe Analytics 擴充功能底下的「設定」按鈕。
  4. 展開使用自訂程式碼設定追蹤摺疊式功能表,便會顯示「開啟編輯器」按鈕。
  5. 開啟自訂程式碼編輯器,並將下方提供的外掛程式程式碼貼入編輯視窗中。
  6. 儲存並發佈 Analytics 擴充功能的變更。

使用 AppMeasurement 安裝外掛程式

Analytics 追蹤物件實例化 (使用 s_gi) 後,將下列程式碼複製並貼到 AppMeasurement 檔案中的任何位置。保留您實作中的程式碼備註和版本號碼,有助於 Adobe 疑難排解任何可能問題。

/* Adobe Consulting Plugin: getPreviousValue v3.0 */
function getPreviousValue(v,c){var k=v,d=c;if("-v"===k)return{plugin:"getPreviousValue",version:"3.0"};var a=function(){if("undefined"!==typeof window.s_c_il)for(var c=0,b;c<window.s_c_il.length;c++)if(b=window.s_c_il[c],b._c&&"s_c"===b._c)return b}();"undefined"!==typeof a&&(a.contextData.getPreviousValue="3.0");window.cookieWrite=window.cookieWrite||function(c,b,f){if("string"===typeof c){var h=window.location.hostname,a=window.location.hostname.split(".").length-1;if(h&&!/^[0-9.]+$/.test(h)){a=2<a?a:2;var e=h.lastIndexOf(".");if(0<=e){for(;0<=e&&1<a;)e=h.lastIndexOf(".",e-1),a--;e=0<e?h.substring(e):h}}g=e;b="undefined"!==typeof b?""+b:"";if(f||""===b)if(""===b&&(f=-60),"number"===typeof f){var d=new Date;d.setTime(d.getTime()+6E4*f)}else d=f;return c&&(document.cookie=encodeURIComponent(c)+"="+encodeURIComponent(b)+"; path=/;"+(f?" expires="+d.toUTCString()+";":"")+(g?" domain="+g+";":""),"undefined"!==typeof cookieRead)?cookieRead(c)===b:!1}};window.cookieRead=window.cookieRead||function(c){if("string"===typeof c)c=encodeURIComponent(c);else return"";var b=" "+document.cookie,a=b.indexOf(" "+c+"="),d=0>a?a:b.indexOf(";",a);return(c=0>a?"":decodeURIComponent(b.substring(a+2+c.length,0>d?b.length:d)))?c:""};var l;d=d||"s_gpv";a=new Date;a.setTime(a.getTime()+18E5);window.cookieRead(d)&&(l=window.cookieRead(d));k?window.cookieWrite(d,k,a):window.cookieWrite(d,l,a);return l};
/******************************************** END CODE TO DEPLOY ********************************************/

使用外掛程式

getPreviousValue函式使用下列引數:

  • v (字串,必要):具有您要傳遞至下一個影像要求之值的變數。用來擷取上一頁值的通用變數為 s.pageName
  • c (字串,選用):儲存值的 Cookie 名稱。如果未設定此引數,其預設值為 "s_gpv"

呼叫此函式時,會傳回Cookie中包含的字串值。 此外掛程式會重設 Cookie 有效期,並從 v 引數指派變數值。閒置 30 分鐘後,Cookie 便會到期。

範例

// 1. Sets prop7 to the cookie value contained in gpv_Page
// 2. Resets the gpv_Page cookie value to the page variable
// 3. If the page variable is not set, reset the gpv_Page cookie expiration
s.prop7 = getPreviousValue(s.pageName,"gpv_Page");

// Sets prop7 to the cookie value contained in gpv_Page, but only if event1 is in the events variable.
if(inList(s.events,"event1")) s.prop7 = getPreviousValue(s.pageName,"gpv_Page");

// Sets prop7 to the cookie value contained in gpv_Page, but only if the page variable is currently set on the page
if(s.pageName) s.prop7 = getPreviousValue(s.pageName,"gpv_Page");

// Sets eVar10 equal to the cookie value contained in s_gpv, then sets the s_gpv cookie to the current value of eVar1.
s.eVar10 = getPreviousValue(s.eVar1);

不太可能發生的巧合情況

如果與v引數相關聯的變數設為新值,而getPreviousValue外掛程式執行中,但Analytics伺服器呼叫未同時傳送,則下次外掛程式執行時新的v引數值仍會視為「上一個值」。
例如,假設下列程式碼會在造訪的第一頁上執行:

s.pageName = "Home";
s.prop7 = getPreviousValue(s.pageName,"gpv_Page");
s.t();

此程式碼會產生一個伺服器呼叫,其中pageName為「Home」且未設定prop7。 不過,對getPreviousValue的呼叫會將pageName的值儲存在gpv_Page Cookie中。 假設緊接著在相同頁面上執行下列程式碼:

s.pageName = "New value";
s.prop7 = getPreviousValue(s.pageName,"gpv_Page");

由於t()函式未在此程式碼區塊中執行,因此不會傳送其他影像要求。 不過,這次getPreviousValue函式程式碼執行時,會將prop7設為先前的pageName值("Home"),然後在gpv_Page Cookie中儲存新的pageName值("New value")。 接下來,假設訪客導覽至不同頁面,並在此頁面上執行下列程式碼:

s.pageName = "Page 2";
s.prop7 = getPreviousValue(s.pageName,"gpv_Page");
s.t();

t()函式執行時,會建立影像要求,其中pageName為「Page 2」,而prop7為「New value」,這是上次呼叫getPreviousValue時的pageName值。 影像要求中從未包含"Home"prop7值,即使「Home」是傳遞至pageName的第一個值。

版本記錄

3.0 (2021 年 3 月 19 日)

  • 將版本編號加入為內容資料。

v2.0 (2019 年 10 月 7 日)

  • 單點發行 (全面邏輯重寫)。

本頁內容