我正在尝试创建一个简单电子表格的图形表示,但我收到一个错误,说‘没有对象类型与列的类型匹配’。
function doGet() {
var ss = SpreadsheetApp.openById("xyz");
var data = ss.getDataRange();
var segFilter = Charts.newStringFilter().setFilterColumnIndex(6).build();
var execFilter = Charts.newCategoryFilter().setFilterColumnIndex(7).build();
var tableChart = Charts.newTableChart()
.setDataViewDefinition(Charts.newDataViewDefinition().setColumns([1,2,3,4,5,6,7,8,9,10,11,12,13]))
.build();
var dashboard = Charts.newDashboardPanel().setDataTable(data)
.bind([segFilter, execFilter], [tableChart])
.build();
var app = UiApp.createApplication();
var filterPanel = app.createVerticalPanel();
var chartPanel = app.createHorizontalPanel();
filterPanel.add(segFilter).add(execFilter).setSpacing(10);
chartPanel.add(tableChart).setSpacing(10);
dashboard.add(app.createVerticalPanel().add(filterPanel).add(chartPanel));
app.add(dashboard);
return app;
}我该如何解决这个问题呢?
发布于 2013-01-03 10:53:22
来自Google Visualization API参考:
为每一列分配一个数据类型...每列中的所有数据必须具有相同的数据类型。
这里的问题是数据表中的前导空白。当您创建一个DataTable时,该列的type是从第一行数据中推测出来的,然后假定后面的所有行都是相同的类型。在电子表格中,G2为空,因此列类型为string。但是,列G中的其余值属于number类型。

在本例中,删除空白行2后仍然会有问题。请注意,A3是string类型,而A4是number类型-任何尝试使用此范围的可视化都会抱怨类型不匹配。
因此,请确保您没有以空值开始任何列,并确保您的类型在该列中是一致的,这样就可以了。
来自评论的其他提示:
setNumberFormat("@STRING@")以编程方式将单元格的数据类型更改为纯文本。在您不打算将其可视化为数字的列中,这是很好的-例如,您的列L包含文本和数字的混合。但是,如果您正在考虑要绘制图表的列(例如,在折线图中),则转换为纯文本将不是一个好主意-它会阻止您执行visualization.https://stackoverflow.com/questions/14132295
复制相似问题