使用Analytics API JSON动态填充Google Chart

时间:2013-06-14 11:27:30

标签: json google-analytics google-api google-visualization

我一直在使用Google AnalyticsAPI来获取与我的GA帐户相关的一些JSON数据,我想使用Google Visualization API在饼图上绘制这些数据。但是,我在使用动态数据填充饼图时遇到问题,我得到错误“如果我使用文本字符串,则”给予addRows的参数必须是数字或数组“

使用addRows()方法,如果我使用变量'd'的输出而不是变量本身,图表呈现正常,但图表似乎有一个问题直接从变量读取数组。有没有人让它动态地工作?

到目前为止,这是我的代码:

<div id="chart_div" style="width: 900px; height: 500px;"></div>

var list = [];
var j = "";
var d = "";

$(window).load(function(){  
    var myjson = 'my json response data';
    // my json already fetched from the server using ASP.NET

    j = $.parseJSON(myjson);

    $.each(j.rows, function() {
       list.push("['" + this[0].toString() + "'," + this[7] + "]");
    }); 
    // I push all JSON entries from the 'rows' object into an array, 
    // but choose only the 1st and 8th column for the relevant data
    // and format it to be readable by the Google Visualization API 

    d = "[" + list + "]";
});


google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);

function drawChart() {
    var data = new google.visualization.DataTable();     

    data.addColumn('string', 'Label');
    data.addColumn('number', 'Value');

    data.addRows(d);

    var options = {
        title: 'My Daily Activities'
    };

    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(data, options);
}

1 个答案:

答案 0 :(得分:0)

对于对答案感兴趣的任何人 - 我通过使用eval()方法在另一个线程上跟随this回答来完成此工作。交换“data.addRows(d);” for“data.addRows(eval(d));”做了伎俩。