前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Adobe Analytics里的数据驱动数据层ACDL

Adobe Analytics里的数据驱动数据层ACDL

作者头像
GA小站
发布2021-06-25 20:00:51
7960
发布2021-06-25 20:00:51
举报
文章被收录于专栏:GA小站GA小站

什么是ACDL

ACDL全称是Adobe Client Data Layer,叫数据驱动数据层,它可以在页面主动发送数据。

是Adobe在2020推出,它的目标是通过提供一种标准化方法来公开和访问任何脚本的任何类型数据,从而减少对网站进行测试的工作量。

Adobe数据层和ACDL的对比

左边的是Adobe数据层,它是页面上静态的数据,所以是“=”。

右边的是ACDL,它是主动主动推送数据,可以看到它有个push的字段。

ACDL和GTM的数据层对比

ACDL与GTM的DataLayer非常类似,如发送的调用的函数,里面的数据结构都高度相似,但ACDL的会更强,它支持数据嵌套、json格式的数据。

ACDL的一般用法

ACDL目前是一个Extensions,你先需要在Extension安装它,一般的ACDL的用法如下:

代码语言:javascript
复制
adobeDataLayer.push({"event":"myEvent",
                                  "data":{"foo":"bar",
                                         "key":"value"}})

event是触发条件,data里面就是发送的数据。

先来看一下如何在data element里拿到data里的数据,也就是foo和key。

创建一个数据元素,命名为AB,然后做如下设置:

这个是ACDL内置的传入数据的方法,data.foo就拿到bar,如果是data.key,就拿到的value。(这种方式有时候会拿不到数据)然后这个data element就可以被Rules或Extensions引用。

接下来看一下怎么发送数据,新建一个Rules,命名为ACDL。

在Rules新建event,做如下设置:

这个设置的意思是,当myEvent触发的的时候才执行,也就是接收到ACDL的数据。

接下来就是配置Action,可以将data element拿到的数据设置成eVars或props发送给Adobe analytics。

ACDL与AEM的用法

AEM里面已经集成有ACDL的,可以开启使用。

以https://wknd.site/content/wknd/us/en.html为例,这个站点是AEM建立的,且开启了ACDL,可以在代码查看中通过关键字“ adobeDataLayer.push”找到ACDL的数据:

它发送的数据就有json数据,而且格式还比较特别,可以在浏览器控制台下看看它具体的数据结构:

发送的数据page里面签到一个page-2eee4f8914,这个动态的页面id,而且里面还有一个特别的数据结构,里面有很多的数据。

像这种情况就不能像一般的ACDL那么处理的,这类情况需要用自定义js去监听event,然后重构数据层里面的信息,提取page-2eee4f8914里面的数据从重新发送,使得能够被Adobe Launch获取和使用。

新建一个Rules,命名为Page Load。

Event选择Custom Code,然后将下面的代码监听event的代码黏贴进入:

代码语言:javascript
复制
var pageShownEventHandler = function(evt) {
   // defensive coding to avoid a null pointer exception
   if(evt.hasOwnProperty("eventInfo") && evt.eventInfo.hasOwnProperty("path")) {
      //trigger Launch Rule and pass event
      console.debug("cmp:show event: " + evt.eventInfo.path);
      var event = {
         //include the path of the component that triggered the event
         path: evt.eventInfo.path,
         //get the state of the component that triggered the event
         component: window.adobeDataLayer.getState(evt.eventInfo.path)
      };

      //Trigger the Launch Rule, passing in the new `event` object
      // the `event` obj can now be referenced by the reserved name `event` by other Launch data elements
      // i.e `event.component['someKey']`
      trigger(event);
   }
}

//set the namespace to avoid a potential race condition
window.adobeDataLayer = window.adobeDataLayer || [];
//push the event listener for cmp:show into the data layer
window.adobeDataLayer.push(function (dl) {
   //add event listener for `cmp:show` and callback to the `pageShownEventHandler` function
   dl.addEventListener("cmp:show", pageShownEventHandler);
});

效果如下:

在配置发送数据之前,我们还可以通过data element去获取page-2eee4f8914里面的具体的数据,假设现在想获取@type这个信息:

那么可以新建一个data element,命名为AA,选择Custom Code,然后将以下代码黏贴进去:

代码语言:javascript
复制
if(event && event.component && event.component.hasOwnProperty('@type')) {
    return event.component['@type'];
}

这段代码的作用就是监听Rule里面的自定义代码触发的事件,然后返回具体的值。

设置后可以在浏览器控制台测试,看是否拿到信息:

已经拿到@type的值,同理可以拿到其他的值到data element。

然后将这些值设置成eVars或props发送给Adobe Analytics。

ACDL的优点

ACDL是主动发送数据,可以有效避免原有的Adobe数据层,由于页面刷新导致的数据重发,数据更准确。

另外ACDL可以和XDM的一些组件结合,实施AEP会更方便。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GA小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档