概述: 我正在从 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
}
如何才能得到如上所示的预期结果?我想将缺少的事件动态添加到对象中。缺少购买就是一个例子,如果未配置,查看项目也可能会丢失。
您可以通过以下逻辑实现预期的输出。
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);