2017-08-14 82 views
0

我試圖在發送GA單擊事件時包含自定義維度列表。GA發送事件,不處理自定義尺寸

此代碼:

ga('send', 'event', category, action, label, { 
    'hitCallback': function() { 
    //some code goes here 
    } 
}); 

但添加自定義維度時:

ga('send', 'event', category, action, label, customDimensions.dimensionsToSend, { 
    hitCallback': function() { 
     //some code 
    }, 
    'hitCallbackFail': function() { 
     alert("Unable to send Google Analytics data"); 
    } 
}); 

無論hitCallback也不hitCallbackFail被炒魷魚。 我在幾個地方閱讀(like here),我應該可以將自定義維度添加到GA發送事件函數,但也許我做錯了什麼。

回答

1

第二個代碼塊的問題是自定義尺寸沒有被正確設置。您無法將自定義維度作爲主要的ga()函數的進一步參數傳遞。相反,你需要通過他們通過fieldsObject(爲你發送的最後一個參數對象的一部分),像這樣:

ga('send', 'event', category, action, label, { 
    'dimension1': 'Some value', // Custom Dimension 1 
    'dimension2': 'Some value 2', // Custom Dimension 2 
    'hitCallback': function() { 
     //some code 
    } 
}); 

這是簡寫:

ga('send', { 
    'hitType': 'event', 
    'eventCategory': category, 
    'eventAction': action, 
    'eventLabel': label, 
    'dimension1': 'Some value', // Custom Dimension 1 
    'dimension2': 'Some value 2', // Custom Dimension 2 
    'hitCallback': function() { 
     //some code 
    } 
}); 

ga() command queue reference

還要注意hitCallbackFail不是有效字段;那不會因失敗而被召喚。

查看list of available fields

事實上,您提供給hitCallback的功能無論您發送的匹配是否成功,或者Google Analytics是否拒絕了匹配,都會執行。只有在Google Analytics庫未加載或服務器連接失敗的情況下,纔會執行的唯一時間。

如果您有要執行的代碼,即使服務器發生故障,您也可以使用超時。從以上頁面查看此示例:

// Use a timeout to ensure the execution of critical application code. 
ga('send', 'pageview', {'hitCallback': criticalCode}); 
setTimeout(criticalCode, 2000); 

// Only run the critical code once. 
var alreadyCalled = false; 
function criticalCode() { 
    if (alreadyCalled) return; 
    alreadyCalled = true; 

    // Run critical code here... 
} 
+0

感謝Colin.Your的回答很有幫助。我找到了這個問題的實際原因和解決方案。 由於customDimensions.dimensionsToSend是一個對象,因此根本不考慮包含hitCallback函數的下一個對象。 爲了解決這個問題,我需要在customDimensions.dimensionsToSend對象中添加hitCallback函數。現在它正在工作。 謝謝 – user1351452

+0

只要'customDimensions.dimensionsToSend'包含正確的鍵(例如'dimension1'),這意味着您已經在調用中傳遞了'fieldsDimensions.dimensionsToSend'。哪個可以工作,但你可能想要清理你的對象的命名約定。 – colintemple