Adobe 插件:rfl(从列表中删除)

重要

此插件由 Adobe Consulting 团队提供,旨在帮助您从 Adobe Analytics 中获取更多的价值。Adobe 客户关怀团队不提供对此插件的支持,包括安装或疑难解答。如果您需要关于此插件的帮助,请与贵组织的帐户管理员联系。他们可以为您安排与顾问的答疑会,以便您向顾问寻求帮助。

通过 rfl 插件,您可以“安全地”从分隔字符串(如 eventsproductslist 和其他变量)中删除值。如果您希望从分隔字符串中删除特定值且无需顾虑使用的分隔符,则可以使用此插件。有一些其他插件需要此插件代码才能正常运行。如果您不需要同时对多个 Analytics 变量运行特定函数,或者您未使用任何依赖此插件的相关插件,则无需使用此插件。

此插件将使用以下逻辑:

  • 如果要删除的值存在,则插件会保留变量中除要删除的值之外的所有其他内容。
  • 如果要删除的值不存在,则插件会按原样保留原始字符串。

使用自定义代码编辑器安装此插件

如果您不想使用插件扩展,则可以使用自定义代码编辑器。

  1. 登录到 Adobe Experience Platform数据收集 使用您的Adobe ID凭据。
  2. 单击所需的属性。
  3. 转到扩展选项卡,然后单击 Adobe Analytics 扩展下的​配置​按钮。
  4. 展开使用自定义代码配置跟踪折叠面板,这会显示打开编辑器按钮。
  5. 打开自定义代码编辑器,并将下面提供的插件代码粘贴到编辑窗口中。
  6. 保存并发布对此 Analytics 扩展所做的更改。

使用 AppMeasurement 安装此插件

在实例化(使用 s_gi)Analytics 跟踪对象后,将以下代码复制并粘贴到 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 参数中指定的值的任何实例(或重复实例)。

示例调用

示例 1

如果…

s.events = "event22,event24,event25";

…并运行以下代码…

s.events = rfl(s.events,"event24");

…s.events 的最终值将为:

s.events = "event22,event25";

示例 2

如果…

s.events = "event22,event24,event25";

…并运行以下代码…

s.events = rfl(s.events,"event26");

…s.events 的最终值将为:

s.events = "event22,event24,event25";

在此示例中,rfl 调用未对 s.events 做出任何更改,因为 s.events 中不包含“event26”

示例 3

如果…

s.events = "event22,event24,event25";

…并运行以下代码…

s.events = rfl(s.events);

…s.events 的最终值将为:

s.events = "";

如果在 rfl 调用中 lv 参数或 vr 参数为空,则插件将不返回任何内容。

示例 4

如果…

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 参数传入的变量。

示例 5

如果…

s.prop4 = "hello|people|today";

…并运行以下代码…

s.prop4 = rfl(s.prop4,"people");

…s.prop4 的最终值仍将为…

s.prop4 = "hello|people|today";

如果 lv 参数值包含的分隔符不同于默认分隔符(即逗号),请务必设置 d1 参数。

示例 6

如果…

s.events = "event22,event23,event25";

…并运行以下代码…

s.events = rfl(s.events,"EVenT23");

…s.events 的最终值将为:

s.events = "event22,event23,event25";

尽管此示例不太符合实际,但它表明需要传递区分大小写的值。

示例 7

如果…

s.events = "event22,event23:12345,event25";

…并运行以下代码…

s.events = rfl(s.events,"event23");

…s.events 的最终值将为:

s.events = "event22,event25";

示例 8

如果…

s.events = "event22,event23:12345,event25";

…并运行以下代码…

s.events = rfl(s.events,"event23:12345");

…s.events 的最终值将为:

s.events = "event22,event23:12345,event25";

当需要删除使用序列化和/或数值/货币语法的事件时,您应仅在 rfl 调用中指定事件本身(即不指定序列化/数值/货币值)。

示例 9

如果…

s.events = "event22,event23,event23,event23,event24,event25";

…并运行以下代码…

s.events = rfl(s.events,"event23");

…s.events 的最终值将为:

s.events = "event22,event24,event25");

示例 10

如果…

s.events = "event22,event23,event23,event23,event24,event25";

…并运行以下代码…

s.events = rfl(s.events,"event23", "", "",true);

…s.events 的最终值将为:

s.events = "event22,event23,event24,event25");

示例 11

如果…

s.events = "event22,event23,event23,event23,event24,event25";

…并运行以下代码…

s.events = rfl(s.events,"event23", "", "|",true);

…s.events 的最终值将为:

s.events = "event22|event23|event24|event25");

示例 12

如果…

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")进行匹配。

示例 13

如果…

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 调用中。

示例 14

如果…

s.linkTrackVars = "events,eVar1,eVar2,eVar3";

…并运行以下代码…

s.linkTrackVars = rfl(s.linkTrackVars,"eVar2", ",", ",", false);

…s.linkTrackVars 的最终值将为:

s.linkTrackVars = "events,eVar1,eVar3";

rfl 调用末尾的最后三个参数(即 ",",",",false)不是必需的,但是由于它们与默认设置匹配,因此即使它们存在也不会“造成任何不利影响”。

示例 15

如果…

s.events = "event22,event23,event24";

…并运行以下代码…

rfl(s.events,"event23");

…s.events 的最终值仍将为:

s.events = "event22,event23,event24";

同样地,此插件仅返回一个值;实际上,此插件不会“重置”通过 lv 参数传入的变量。

版本历史记录

2.1(2021 年 3 月 19 日)

  • 以上下文数据形式添加了版本号。

2.01(2019 年 9 月 17 日)

  • 修复了关于默认分隔符值的小错误

2.0(2018 年 4 月 16 日)

  • 修正版本(重新编译,代码更小)。
  • 删除了使用 join 插件的需要。

1.0(2016 年 7 月 18 日)

  • 第一版。

在此页面上