【问题标题】:I got an "Error at line 2, character 4: Parse error. primary expression expected"我收到“第 2 行错误,字符 4:解析错误。预期主表达式”
【发布时间】:2020-02-12 22:20:34
【问题描述】:

我不知道为什么我在 Google 跟踪代码管理器中的这个自定义 javascript 变量上出现错误?

我正在尝试用值填充 facebook 像素的购买事件。所以这是我从数据层获取信息到购买事件的方式。我不确定我这样做是否正确,但由于错误消息,我无法在预览模式下对其进行测试!

var facebookArray = [];

{{DLV - Products}}.forEach(function(product) {

  facebookArray.push({

    sku: product.sku,

    quantity: product.quantity,

    item_price: product.price,

  });
});

Datalayer 变量 {{DLV - Products}} 来自 datalayer 中的 transactionProducts(是的,我们不使用增强型电子商务)。

这是 facebbok 购买事件的样子(自定义 HTML 标记):

<script>


fbq('track', 'Purchase',{

 products: '[{{custom JS - transaction products}}]',


value: '{{DLV - Ecommerce - TransactionTotal}}',   


currency: 'SEK'


});

</script>

【问题讨论】:

  • 我认为编辑器不理解 mustache 模板,但 OP 无论如何也不使用 mustache 模板,因此出现错误
  • 好的!但是,我如何将数据层变量中的信息获取到自定义 javscript 变量中呢?对不起,愚蠢的问题,但我的大脑不再工作了:P
  • 你能修复代码吗 - 编辑后看起来更糟:p
  • 现在能赚更多的钱吗?
  • 是的,只要该代码经过预处理,将{{DLV - Products}} 替换为数组

标签: javascript google-tag-manager


【解决方案1】:

据我了解,您已完全复制了变量代码。这意味着,您没有为 GTM 的自定义 javascript 变量提供完整的必需语法。根据内联帮助:

该字段应该是一个 JavaScript 函数,它使用以下方法返回一个值 'return' 声明。如果函数没有显式返回 值,它将返回 undefined 并且您的容器可能不会像 预期的。以下是该字段的示例: function() { var now = new Date(); 现在返回.getTime(); }

所以你需要将你的代码包装到一个函数中,同时返回计算后的处理值:

function () {
  var facebookArray = [];

  {{DLV - Products}}.forEach(function(product) {

    facebookArray.push({

      sku: product.sku,

      quantity: product.quantity,

      item_price: product.price,

    });
  });

  return facebookArray;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多