调用.execute()之前,Google Embed API格式数据

LS_*_*LS_ 5 google-analytics google-analytics-api

我需要格式化从Google Analytics(分析)获得的响应,然后再将其显示在Google图表中,我尝试在on("success"...方法被触发时编辑响应,但是我发现它在调用之后被调用.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();
Run Code Online (Sandbox Code Playgroud)

使用,console.log(response);我可以看到记录已label被修改,但图表在编辑之前已被填充。

Dio*_*elo 0

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

\n\n

这种方法的一个问题是元素的位置不会被重新计算。因此,对于不同的字符串大小,您可能会得到重叠的字符串。此外,它似乎不会影响工具提示。

\n\n

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

\n\n
function recursiveTranslate(e) {\n    var key = e.html(),\n        dict = {};\n\n    dict['Date'] = 'Data';\n    dict['Users'] = 'Visitantes';\n    dict['Sessions'] = 'Visitas';\n    dict['Pageviews'] = 'Visualiza\xc3\xa7\xc3\xb5es';\n\n    if (key in dict) {\n        e.html(dict[key]);\n    }\n\n    for (var i = 0; i < e.children().length; i++) {\n        recursiveTranslate($(e.children()[i]));\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我recursiveTranslate在成功事件中调用:

\n\n
dataChart5.on('success', function h(obj) {\n    recursiveTranslate($('#chart-5-container'));\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

它不优雅并且有很多问题。我真的很想找到正确的解决方案。

\n