动态添加范围到Google EmbeddedChart

时间:2012-09-26 17:41:32

标签: google-apps-script google-visualization google-sheets

我想动态地将范围添加到新的EmbeddedChartBuilder但我收到此错误:

“在dashOutput中 - 行:605,错误:InternalError:找不到方法insertChart($ Proxy843)。”

以下代码不是动态的,但有效:

var tRange = sourceSheet.getRange(12, 1, 4, 2);
var tRange2 = sourceSheet.getRange(12,3,4,2);
var chart2 = destSheet.newChart()
             .setPosition(5,6,5,5)
             .setChartType(Charts.ChartType.LINE)
             .addRange(tRange)
             .addRange(tRange2)
             .build();
destSheet.insertChart(chart2);

但这给了我这个错误。

var tRange = sourceSheet.getRange(12, 1, 4, 2);
var tRange2 = sourceSheet.getRange(12,3,4,2);
var chart2 = destSheet.newChart()
             .setPosition(5,6,5,5)
             .setChartType(Charts.ChartType.LINE);
chart2.addRange(tRange);
chart2.addRange(tRange2);
chart2.build();
destSheet.insertChart(chart2);

第二个例子不是动态的,但是如果它有效,我会在循环中重复.addRange()。

有什么想法吗?我错过了什么?你真的必须知道在图表创建时你要添加多少个范围?

谢谢, Eric B.

1 个答案:

答案 0 :(得分:0)

问题是Sheet.newChart方法创建了EmbeddedChartBuilder类的实例,EmbeddedChartBuilder.build方法创建了EmbeddedChart类的实例和Sheet.insertChart }方法需要EmbeddedChart实例。在第一个代码中,chart2变量是EmbeddedChart类的实例,在第二个案例中,chart2变量是EmbeddedChartBuilder类的实例。这就是错误发生的原因。更改代码如下。它应该工作。

var tRange = sourceSheet.getRange(12, 1, 4, 2);
var tRange2 = sourceSheet.getRange(12,3,4,2);
var chart2 = destSheet.newChart()
             .setPosition(5,6,5,5)
             .setChartType(Charts.ChartType.LINE);
chart2.addRange(tRange);
chart2.addRange(tRange2);
destSheet.insertChart(chart2.build());