使用扩展程序时如何从 Qlikview 获取数据?

How to get data from Qlikview when using extensions?

我有以下扩展,当数据存在于函数本身中时,它可以完美地工作。但是,每当我尝试使用循环从 Qlikview 获取数据时,它都会给我一个空白输出。谁能帮我解决这个问题?在下面的代码中,我注释掉了我在函数本身中提供数据的部分。请帮忙。

Qva.LoadScript("http://www.google.com/jsapi?callback=loadGoogleCoreChart", function () {
});

 function loadGoogleCoreChart() {
google.load('visualization', '1', {
    packages: ['corechart'],
    callback: googleCoreChartLoaded
});
 }

function googleCoreChartLoaded() {

Qva.AddExtension('QlikView/Examples/GooglePieChart', function () {

    //Declaring a two dimensional array (an array of arrays)
    var row = new Array(this.Data.Rows.length + 1);
    for (var i = 0; i <= this.Data.Rows.length; i++) {
        row[i] = new Array(2);
    }
    //Getting the data from QlikView-- this part is not working!
    for (var j = 1; j <= this.Data.Rows.length; j++) {
        row[j][0] = this.Data.Rows[j - 1][0].text;

        var temp = this.Data.Rows[j - 1][1].text;
        row[j][1] = Number(temp);
    }

    var data = google.visualization.arrayToDataTable(row);
    alert("hello");
    /*
    var data = google.visualization.arrayToDataTable([
      ['Task', 'Hours per Day'],
      ['Work',     11],
      ['Eat',      2],
      ['Commute',  2],
      ['Watch TV', 2],
      ['Sleep',    7]
    ]);
    */

    new google.visualization.PieChart(this.Element).draw(data, { chartArea: { left: 20, top: 20, width: "100%", height: "100%"} });
});
}

在 JavaScript、
中构建数组时 在填充值

之前没有必要定义/创建所有数组元素

另外,当以这种方式使用 for 循环时,对于第二个参数,
需要使用小于 (<)
不小于或等于 (<=)

否则,循环将在最后一个元素上失败,因为它们是从零开始的

如果你有一个包含 2 个元素的数组,它们的索引将为零和一个
例如-- arr[0] -- arr[1]

所以当i等于length2时——arr[2]将不存在

尝试像下面的代码片段...

Qva.AddExtension('QlikView/Examples/GooglePieChart', function () {
    var row = [];
    for (var i = 0; i < this.Data.Rows.length; i++) {
      row.push([
        this.Data.Rows[i][0].text,
        parseFloat(this.Data.Rows[i][1].text)
      ]);
    }

    var data = google.visualization.arrayToDataTable(row, true);
    new google.visualization.PieChart(this.Element).draw(data, { chartArea: { left: 20, top: 20, width: "100%", height: "100%"} });
});

注意:如果您的数组第一行没有列标题,需要添加 true 作为第二个参数 --> arrayToDataTable