谷歌在调用.execute()之前嵌入API格式数据

时间:2015-09-16 10:58:41

标签: google-analytics google-analytics-api

我需要格式化我从Google Analytics中获得的响应,然后在Google Chart中显示它,我尝试在on("success" ...方法被触发时编辑响应,但我发现它在{{{{}后被调用1}}。

有没有办法在收到响应之后和填充图表之前编辑响应?

这是我的功能:

.execute()

使用var dataChart5 = new gapi.analytics.googleCharts.DataChart({ reportType: 'ga', query: { 'ids': 'ga:***', // My ID 'start-date': '31daysAgo', 'end-date': 'yesterday', 'metrics': 'ga:users,ga:percentNewSessions,ga:sessions,ga:bounceRate,ga:avgSessionDuration,ga:pageviews,ga:pageviewsPerSession', 'prettyPrint':'true', }, chart: { 'container': 'chart-5-container', 'type': 'TABLE', 'options': { 'width': '100%', 'title': 'test' } } }); dataChart5.on('success', function(response) { response.data.cols[0].label = "test1"; //here I edit the response console.log(response); }); dataChart5.execute(); 我可以看到记录console.log(response);被修改,但图表会在编辑之前填充。

1 个答案:

答案 0 :(得分:0)

我认为有一种解决方法。它有问题,但可能有用。在处理success事件时,调用一个函数,该函数将递归地遍历$('#chart-5-container')的子元素并在其中应用格式。

该方法的一个问题是不会重新计算元素的位置。因此,使用不同的字符串大小,您可能会得到重叠的字符串。而且,它似乎并没有影响工具提示。

我正在使用这种方法来翻译葡萄牙语。

function recursiveTranslate(e) {
    var key = e.html(),
        dict = {};

    dict['Date'] = 'Data';
    dict['Users'] = 'Visitantes';
    dict['Sessions'] = 'Visitas';
    dict['Pageviews'] = 'Visualizações';

    if (key in dict) {
        e.html(dict[key]);
    }

    for (var i = 0; i < e.children().length; i++) {
        recursiveTranslate($(e.children()[i]));
    }
}

然后我在成功事件中致电recursiveTranslate

dataChart5.on('success', function h(obj) {
    recursiveTranslate($('#chart-5-container'));
});

它不优雅,有很多问题。我真的很想找到合适的解决方案。