此外掛程式由 Adobe Consulting 提供,協助您從 Adobe Analytics 中獲得更多價值。Adobe 客戶服務不提供此外掛程式的支援,包括安裝或疑難排解在內。如果您需要與此外掛程式有關的協助,請聯絡貴組織的 Adobe 客戶團隊。他們可幫您安排顧問會議,以尋求協助。
rfl
外掛程式可讓您「安全地」從分隔字串中移除值,例如 events
、products
、list
等。如果您想從分隔字串中移除特定值,而不想顧慮分隔字元,此外掛程式非常實用。其他多個外掛程式依賴此程式碼才能正確運作。如果您不需要一次對多個 Analytics 變數執行特定函數,或者您未使用任何相依外掛程式,就不需要此外掛程式。
此外掛程式使用下列邏輯:
Web SDK尚不支援此外掛程式。
Adobe提供的擴充功能可讓您搭配Adobe Analytics使用最常用的外掛程式。
如果您不想使用常見Analytics外掛程式擴充功能,可以使用自訂程式碼編輯器。
Analytics 追蹤物件實例化 (使用 s_gi
) 後,將下列程式碼複製並貼到 AppMeasurement 檔案中的任何位置。保留您實作中的程式碼備註和版本號碼,有助於 Adobe 疑難排解任何可能問題。
/******************************************* BEGIN CODE TO DEPLOY *******************************************/
/* Adobe Consulting Plugin: rfl (removeFromList) v2.1 */
function rfl(lv,vr,d1,d2,df){var b=lv,f=vr,e=d1,h=d2,g=df;if("-v"===b)return{plugin:"rfl",version:"2.1"};a:{if("undefined"!==typeof window.s_c_il){var c=0;for(var a;c<window.s_c_il.length;c++)if(a=window.s_c_il[c],a._c&&"s_c"===a._c){c=a;break a}}c=void 0}"undefined"!==typeof c&&(c.contextData.rfl="2.1");if(!b||!f)return"";c=[];a="";e=e||",";h=h||e;g=g||!1;b=b.split(e);e=b.length;for(var d=0;d<e;d++)-1<b[d].indexOf(":")&&(a=b[d].split(":"),a[1]=a[0]+":"+a[1],b[d]=a[0]),-1<b[d].indexOf("=")&&(a=b[d].split("="),a[1]=a[0]+"="+a[1],b[d]=a[0]),b[d]!==f&&a?c.push(a[1]):b[d]!==f?c.push(b[d]):b[d]===f&&g&&(a?c.push(a[1]):c.push(b[d]),g=!1),a="";return c.join(h)};
/******************************************** END CODE TO DEPLOY ********************************************/
rfl
函數會使用以下引數:
lv
(必要,字串):包含分隔值清單的變數 (或字串)vr
(必要,字串):您要從 lv
引數中移除的值。Adobe 建議您不要在 rfl
單一呼叫期間移除多個值。d1
(選用,字串):lv
引數使用的分隔字元。預設為逗號 (,
)。d2
(選用,字串):您要讓傳回字串使用的分隔字元。預設為與 d1
引數相同的值。df
(選用,布林值):如果為 true
,則僅強制從 lv
引數中複製 vr
引數的例項,而非所有例項。若未設定,則預設為 false
。呼叫此函數會傳回包含 lv
引數的修改字串,但字串中不包含 vr
引數中所指定值的任何實例 (或重複實例)。
若…
s.events = "event22,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event24");
…s.events 的最終值將為:
s.events = "event22,event25";
若…
s.events = "event22,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event26");
…s.events 的最終值將為:
s.events = "event22,event24,event25";
在此範例中,rfl 呼叫沒有對 s.events 做任何變更,因為 s.events 中不包含「event26」
若…
s.events = "event22,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events);
…s.events 的最終值將為:
s.events = "";
如果 rfl
呼叫中的 lv
引數或 vr
引數為空白,則外掛程式將不會傳回任何內容。
若…
s.prop4 = "hello|people|today";
…且下列程式碼執行…
s.eVar5 = rfl(s.prop4,"people","|");
…s.prop4 的最終值仍會是…
s.prop4 = "hello|people|today";
…但 s.eVar5 的最終值將為:
s.eVar5 = "hello|today";
請記得,外掛程式只會傳回值,實際上並不會「重設」透過 lv
引數傳入的變數。
若…
s.prop4 = "hello|people|today";
…且下列程式碼執行…
s.prop4 = rfl(s.prop4,"people");
…s.prop4 的最終值仍會是…
s.prop4 = "hello|people|today";
若 lv
引數值包含與預設值不同的分隔字元 (即逗號),請務必設定 d1
引數。
若…
s.events = "event22,event23,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"EVenT23");
…s.events 的最終值將為:
s.events = "event22,event23,event25";
雖然此範例並不實際,但呈現出傳入區分大小寫值的必要性。
若…
s.events = "event22,event23:12345,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event23");
…s.events 的最終值將為:
s.events = "event22,event25";
若…
s.events = "event22,event23:12345,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event23:12345");
…s.events 的最終值將為:
s.events = "event22,event23:12345,event25";
當您需要移除使用序列化及/或數值/貨幣語法的事件時,應該在 rfl
呼叫中僅指定事件本身 (亦即不含序列化/數值/貨幣值)。
若…
s.events = "event22,event23,event23,event23,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event23");
…s.events 的最終值將為:
s.events = "event22,event24,event25");
若…
s.events = "event22,event23,event23,event23,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event23", "", "",true);
…s.events 的最終值將為:
s.events = "event22,event23,event24,event25");
若…
s.events = "event22,event23,event23,event23,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event23", "", "|",true);
…s.events 的最終值將為:
s.events = "event22|event23|event24|event25");
若…
s.events = "event22,event23,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event23,event24");
…s.events 的最終值將為:
s.events = "event22,event23,event24,event25";
不支援在 vr
引數中設定多個值。 上述範例中,rfl
邏輯會先分割 lv
引數 (即 s.events) 中的值,然後嘗試比對每個分隔值與完整 vr
引數值 (即 "event23,event24"
)。
若…
s.events = "event22,event23,event24,event25";
…且下列程式碼執行…
s.events = rfl(s.events,"event23");
s.events = rfl(s.events,"event24");
…s.events 的最終值將為:
s.events = "event22,event25");
從清單中移除的每個值都應該包含在其自己的 rfl
呼叫中。
若…
s.linkTrackVars = "events,eVar1,eVar2,eVar3";
…且下列程式碼執行…
s.linkTrackVars = rfl(s.linkTrackVars,"eVar2", ",", ",", false);
…s.linkTrackVars 的最終值將為:
s.linkTrackVars = "events,eVar1,eVar3";
此 rfl
呼叫結尾的最後三個引數 (即「,」、「,」、false) 並非必要,但是也不會因為存在而「影響任何項目」,因為它們符合預設設定。
若…
s.events = "event22,event23,event24";
…且下列程式碼執行…
rfl(s.events,"event23");
…s.events 的最終值仍會是:
s.events = "event22,event23,event24";
再次強調,請記得外掛程式只會傳回值,實際上並不會「重設」透過 lv
引數傳入的變數。
join
外掛程式的必要性。