当 API 输出中不可用时动态添加对象属性作为假值不起作用?

问题描述 投票:0回答:1

概述: 我正在从 GA4 数据 API 中提取用户渠道数据。用户漏斗由

view_item
add_to_cart
begin_checkout
purchase

等事件组成

我试图找出提取数据时 API 中缺少漏斗的哪一步。以下 API 输出拉取 4 个步骤,即

view_item
add_to_cart
begin_checkout
purchase
,但输出结果没有
purchase
步骤。这意味着用户尚未配置购买事件。我的目标是将购买价值添加为错误,如下所示。一旦获得预期结果,我可以通过 Appscript 将此数据粘贴到我的 Google 表格中。

GA4 帐户的 API 输出

在下面的代码中,您将看到除

purchase
之外的所有事件都已填充。

var data = [{
      dimensionValues : [{
        value : 'view_item'
      }],
      metricValues : [{
        value : 175029
      }]
    }, {
      dimensionValues : [{
        value : 'add_to_cart'
      }],
      metricValues : [{
        value : 10049
      }]
    }, {
      metricValues : [{
        value : 6326
      }],
      dimensionValues : [{
        value : 'begin_checkout'
      }]
    } 
  
  ]

目标

如果事件数据不可用,例如

purchase
,那么我想将其添加为错误值。

预期结果

{
  add_to_cart: 10049,
  begin_checkout: 6326,
  view_item: 175029
  purchase: false
}

这就是我到目前为止所做的

var eventArray1 = [];

for (var item in data1) {
      var dimensions = data1[item].dimensionValues;
      for (var i = 0; i < dimensions.length; i++) {
        eventArray1.push([dimensions[i].value, data1[item].metricValues[0].value]);
      }

    }


const obj = Object.fromEntries(eventArray1);

const viewItem = obj.view_item !== undefined;    
const addToCart = obj.add_to_cart !== undefined;
const beginCheckout = obj.begin_checkout !== undefined;
const p = obj.purchase !== undefined;

if (viewItem === false || addToCart === false || beginCheckout === false || p === false) {

obj.view_item = viewItem
obj.add_to_cart = addToCart
obj.begin_checkout = beginCheckout
obj.purchase = p

} else  {}

console.log(obj)

控制台日志


{
  add_to_cart: true,
  begin_checkout: true,
  purchase: false,
  view_item: true
}

如何才能得到如上所示的预期结果?我想将缺少的事件动态添加到对象中。缺少购买就是一个例子,如果未配置,查看项目也可能会丢失。

javascript javascript-objects google-analytics-4
1个回答
0
投票

您可以通过以下逻辑实现预期的输出。

  const data = [
    { dimensionValues: [{ value: "view_item" }], metricValues: [{ value: 175029 }] },
    { dimensionValues: [{ value: "add_to_cart" }], metricValues: [{ value: 10049 }] },
    { metricValues: [{ value: 6326 }], dimensionValues: [{ value: "begin_checkout" }] }
  ];

  const allEvents = ["view_item", "add_to_cart", "begin_checkout", "purchase"];

  const eventArray = data.flatMap((item) =>
    item.dimensionValues.map(({ value }) => [value, item.metricValues[0].value])
  );

  const expectedOutput = Object.fromEntries(eventArray);

  allEvents.forEach((event) => (expectedOutput[event] ??= false));

  console.log(expectedOutput);
© www.soinside.com 2019 - 2024. All rights reserved.