如何从 dataLayer 数组创建 GTM 变量?

Mpl*_*yBy 4 google-tag-manager

我从“简单”数据层创建 GTM 变量没有问题,例如:

"transactionEntity": "ORDER",
"transactionId": "193552702",
Run Code Online (Sandbox Code Playgroud)

但无法理解如何从数组中获取值。基本上我需要从这些 dataLayer 表中获取 ID 值:

"transactionProducts":     [
      {
        "id": "5",
        "sku": "black-handbag",
        "price": 170,
        "priceexcludingtax": "0.00",
        "tax": "0.00",
        "taxrate": 0,
        "type": "bundle",
        "category": "",
        "quantity": 1
      },
      {
        "id": "3",
        "sku": "red-handbag",
        "price": 120,
        "priceexcludingtax": "0.00",
        "tax": "0.00",
        "taxrate": 0,
        "type": "bundle",
        "category": "",
        "quantity": 1
      }
    ],
Run Code Online (Sandbox Code Playgroud)

并使用以下格式将它们传递给 FB 像素:

content_ids: ['5', '3'],
Run Code Online (Sandbox Code Playgroud)

Vic*_*yev 11

如果你有这样的数据层:

<script>
dataLayer.push({
  'ecommerce': {
     "transactionProducts":     [
      {
        "id": "5",
        "sku": "black-handbag",
        "price": 170,
        "priceexcludingtax": "0.00",
        "tax": "0.00",
        "taxrate": 0,
        "type": "bundle",
        "category": "",
        "quantity": 1
      },
      {
        "id": "3",
        "sku": "red-handbag",
        "price": 120,
        "priceexcludingtax": "0.00",
        "tax": "0.00",
        "taxrate": 0,
        "type": "bundle",
        "category": "",
        "quantity": 1
      }
    ]
  }
});
</script>
Run Code Online (Sandbox Code Playgroud)

并且您想创建将返回 ID 数组的变量 ['5', '3']

然后你需要创建两个变量:

1) 姓名: transactionProducts

类型: Data Layer Variable

数据层变量名称: ecommerce.transactionProducts

2) 姓名: transactionProductsIds

类型: Custom JavaScript

自定义 JavaScript: function () { return {{transactionProducts}}.map(function(a) {return a.id;}); }

然后你可以使用你的第二个变量transactionProductsIds来接收 ID