此插件由 Adobe Consulting 团队提供,旨在帮助您从 Adobe Analytics 中获取更多的价值。Adobe 客户关怀团队不提供对此插件的支持,包括安装或疑难解答。如果您需要关于此插件的帮助,请与贵组织的帐户管理员联系。他们可以为您安排与顾问的答疑会,以便您向顾问寻求帮助。
通过 rfl
插件,您可以“安全地”从分隔字符串(如 events
、products
、list
和其他变量)中删除值。如果您希望从分隔字符串中删除特定值且无需顾虑使用的分隔符,则可以使用此插件。有一些其他插件需要此插件代码才能正常运行。如果您不需要同时对多个 Analytics 变量运行特定函数,或者您未使用任何依赖此插件的相关插件,则无需使用此插件。
此插件将使用以下逻辑:
Adobe 提供了一个扩展,通过该扩展,您可以使用一些最常用的插件。
如果您不想使用插件扩展,则可以使用自定义代码编辑器。
在实例化(使用 s_gi
)Analytics 跟踪对象后,将以下代码复制并粘贴到 AppMeasurement 文件中的任意位置。在您的实施中保留代码的注释和版本号可帮助 Adobe 对任何潜在问题进行疑难解答。
/******************************************* BEGIN CODE TO DEPLOY *******************************************/
/* Adobe Consulting Plugin: rfl (removeFromList) v2.01 */
s.rfl=function(lv,vr,d1,d2,df){if(!lv||!vr)return"";var d=[],b="";d2=d2?d2:d1;df=df?!0:!1;lv=lv.split(d1?d1:",");d1=lv.length;for(var c=0;c<d1;c++)-1<lv[c].indexOf(":")&&(b=lv[c].split(":"),b[1]=b[0]+":"+b[1],lv[c]=b[0]),-1<lv[c].indexOf("=")&&(b=lv[c].split("="), b[1]=b[0]+"="+b[1],lv[c]=b[0]),lv[c]!==vr&&b?d.push(b[1]):lv[c]!==vr?d.push(lv[c]):lv[c]===vr&&df&&(b?d.push(b[1]):d.push(lv[c]),df=!1),b="";return d.join(d2)};
/******************************************** 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 = s.rfl(s.events,"event24");
…s.events 的最终值将为:
s.events = "event22,event25";
如果…
s.events = "event22,event24,event25";
…并运行以下代码…
s.events = s.rfl(s.events,"event26");
…s.events 的最终值将为:
s.events = "event22,event24,event25";
在此示例中,rfl 调用未对 s.events 做出任何更改,因为 s.events 中不包含“event26”
如果…
s.events = "event22,event24,event25";
…并运行以下代码…
s.events = s.rfl(s.events);
…s.events 的最终值将为:
s.events = "";
如果在 s.rfl 调用中 lv 参数或 vr 参数为空,则插件将不返回任何内容
如果…
s.prop4 = "hello|people|today";
…并运行以下代码…
s.eVar5 = s.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 = s.rfl(s.prop4,"people");
…s.prop4 的最终值仍将为…
s.prop4 = "hello|people|today";
如果 lv 参数值包含的分隔符不同于默认分隔符(即逗号),请务必设置 d1 参数。
如果…
s.events = "event22,event23,event25";
…并运行以下代码…
s.events = s.rfl(s.events,"EVenT23");
…s.events 的最终值将为:
s.events = "event22,event23,event25";
尽管此示例不太符合实际,但它表明需要传递区分大小写的值。
如果…
s.events = "event22,event23:12345,event25";
…并运行以下代码…
s.events = s.rfl(s.events,"event23");
…s.events 的最终值将为:
s.events = "event22,event25";
如果…
s.events = "event22,event23:12345,event25";
…并运行以下代码…
s.events = s.rfl(s.events,"event23:12345");
…s.events 的最终值将为:
s.events = "event22,event23:12345,event25";
当需要删除使用序列化和/或数字/货币语法的事件时,您应仅在 s.rfl 调用中指定事件本身(即不指定序列化/数字/货币值)。
如果…
s.events = "event22,event23,event23,event23,event24,event25";
…并运行以下代码…
s.events = s.rfl(s.events,"event23");
…s.events 的最终值将为:
s.events = "event22,event24,event25");
如果…
s.events = "event22,event23,event23,event23,event24,event25";
…并运行以下代码…
s.events = s.rfl(s.events,"event23", "", "",true);
…s.events 的最终值将为:
s.events = "event22,event23,event24,event25");
如果…
s.events = "event22,event23,event23,event23,event24,event25";
…并运行以下代码…
s.events = s.rfl(s.events,"event23", "", "|",true);
…s.events 的最终值将为:
s.events = "event22|event23|event24|event25");
如果…
s.events = "event22,event23,event24,event25";
…并运行以下代码…
s.events = s.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 = s.rfl(s.events,"event23");
s.events = s.rfl(s.events,"event24");
…s.events 的最终值将为:
s.events = "event22,event25");
要从列表中删除的每个值都应包含在其自己的 s.rfl 调用中。
如果…
s.linkTrackVars = "events,eVar1,eVar2,eVar3";
…并运行以下代码…
s.linkTrackVars = s.rfl(s.linkTrackVars,"eVar2", ",", ",", false);
…s.linkTrackVars 的最终值将为:
s.linkTrackVars = "events,eVar1,eVar3";
此 s.rfl 调用末尾的最后三个参数(即 ",",",",false)不是必需的,但是由于它们与默认设置匹配,因此即使它们存在也不会“造成任何不利影响”。
如果…
s.events = "event22,event23,event24";
…并运行以下代码…
s.rfl(s.events,"event23");
…s.events 的最终值仍将为:
s.events = "event22,event23,event24";
同样地,请记住,此插件仅返回一个值;实际上,此插件不会“重置”通过 lv 参数传入的变量。
join
插件的需要。