问题通过动态标记管理器中的数据元素更新Adobe Analytics变量 - DTM

时间:2015-08-09 09:36:19

标签: javascript adobe adobe-analytics

我将Adobe Analytics设置作为DTM中的工具。我有一个“页面名称”数据元素,它引用了一个JS对象(digitalData.page.pageInfo.pageID)。在工具设置区域Global Variables中,我将prop1设置为%Hostname%:%Page Name%。我还有网页浏览量和内容,页面名称设置为%主机名%:%页面名称%。问题是DTM在这里设置值,它无法访问digitalData对象(我正试图在下面解决时间问题)。

我遇到DTM代码运行时无法使用该对象的问题,因此我提出了一个页面加载规则来禁止Google Analytics调用

s.abort = true;

然后在第三方JavaScript区域中我放入代码来检查要检测的对象,并在控制台输出中获得预期值。

(function() { try { function checkObj(){ if (digitalData === null || digitalData === undefined) { setTimeout(checkObj(), 200); }else{ var pn = _satellite.getVar("Page Name"); console.log("----> object available - Page Name DE holds:" + pn); _satellite.track("Analytics Call"); return; } } checkObj(); } catch(e) {e.message(e);} })();

在直接呼叫规则“分析呼叫”中,我将Adobe页面名称和prop1再次设置为%Hostname%:%Page Name%,但页面名称仍为空白(只有主机名以冒号输出) Analytics Call会消失吗?

在测试中,我注意到在“分析工具”设置中,在“网页浏览量和内容”部分中,如果我从“网页名称”设置文本框中删除了值,那么当分析调用结束时,没有为pageName输出任何内容吗?

所以我的问题是当分析调用结束时,如何使用digitalData对象的新值更新Page Name和prop1变量?

1 个答案:

答案 0 :(得分:1)

因为这似乎是您的DL对象可用时和页面加载规则执行之间的竞争条件,所以我会执行以下操作:

  • 创建一个"全局页面加载规则"对于此用例,而不是使用工具中的AA全局配置部分。
  • 在全局页面加载规则集的AA自定义代码部分中,s.abort = true。这将允许您等待所有其他对象加载。
  • 加载所有对象时调用直接调用规则
  • 在DC规则中检查您的DL对象(pageName)并设置AA vars。

DC规则中的示例代码

   if(Data_Layer_Obj)
   s.pageName = datalayer.pageName
}

由于页面加载规则与数据层对象之间存在时序问题,因此在此处等待数据元素可能是一项挑战。

希望这有帮助。