尝试使用电子表格中的Google Apps脚本构建饼图,到目前为止还没有任何工作。
这是我现在的代码:
代码:
function doGet() {
var ss = SpreadsheetApp.openById('1lmmpJs2Bz3EfQWExB4KXq_uJWoLlq1PMCahy6w4ipcE');
var data = ss.getDataRange();
/* Build filters to analyze charts */
var neighborhoodFilter = Charts.newCategoryFilter().setFilterColumnIndex(2).build();
var attendanceFilter = Charts.newCategoryFilter().setFilterColumnIndex(3).build();
var pieChart = Charts.newPieChart()
.setDataViewDefinition(Charts.newDataViewDefinition().setColumns([2,3]))
.build();
var dashboard = Charts.newDashboardPanel().setDataTable(data)
.bind([neighborhoodFilter, attendanceFilter], [pieChart])
.build();
var app = UiApp.createApplication();
var filterPanel = app.createVerticalPanel();
var chartPanel = app.createHorizontalPanel();
filterPanel.add(neighborhoodFilter).add(attendanceFilter).setSpacing(10);
chartPanel.add(pieChart).setSpacing(10);
dashboard.add(app.createVerticalPanel().add(filterPanel).add(chartPanel));
app.add(dashboard);
return app;
}
它已部署为网络应用,可在此处查看:https://script.google.com/macros/s/AKfycbyQMz3dSYqNLBEusCs4-_lB8u9wvy-P9Q_HXKn-oCH8b3gqgb4E/exec
我通过调试器运行它,一切正常。
此外,为了更加清晰,这是一个更大的仪表板的简化片段,我试图创建填充两个图表。
如果它在我尝试使用的整段代码中非常有用(表格图表按照此示例中的预期填充):
代码:
function doGet() {
var ss = SpreadsheetApp.openById('1lmmpJs2Bz3EfQWExB4KXq_uJWoLlq1PMCahy6w4ipcE');
var data = ss.getDataRange();
/* Build filters to analyze charts */
var nameFilter = Charts.newStringFilter().setFilterColumnIndex(1).build();
var neighborhoodFilter = Charts.newCategoryFilter().setFilterColumnIndex(2).build();
var attendanceFilter = Charts.newCategoryFilter().setFilterColumnIndex(3).build();
var transportationFilter = Charts.newCategoryFilter().setFilterColumnIndex(4).build();
var travelFilter = Charts.newCategoryFilter().setFilterColumnIndex(5).build();
var companyFilter = Charts.newNumberRangeFilter().setFilterColumnIndex(6).build();
/* Build charts and dashboard object */
var tableChart = Charts.newTableChart()
.setDataViewDefinition(Charts.newDataViewDefinition().setColumns([1,2,3,4,5,6]))
.build();
var pieChart = Charts.newPieChart()
.setDataViewDefinition(Charts.newDataViewDefinition().setColumns([2,3]))
.build();
var dashboard = Charts.newDashboardPanel().setDataTable(data)
.bind([neighborhoodFilter, attendanceFilter, nameFilter, transportationFilter, travelFilter, companyFilter], [tableChart, pieChart])
.build();
var app = UiApp.createApplication();
var filterPanel = app.createVerticalPanel();
var chartPanel = app.createHorizontalPanel();
filterPanel.add(neighborhoodFilter).add(attendanceFilter).add(nameFilter).add(transportationFilter).add(travelFilter).add(companyFilter).setSpacing(10);
chartPanel.add(pieChart).add(tableChart).setSpacing(10);
dashboard.add(app.createVerticalPanel().add(filterPanel).add(chartPanel));
app.add(dashboard);
return app;
}
链接可以在这里看到工作表图表:https://script.google.com/macros/s/AKfycbwn66EMbZsrCNyuRCYMk6ERyXhKGNt3_m1i5VIj_ITzWxAnb1vw/exec
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
您可能需要注意:
UI服务是deprecated on December 11, 2014。要创建用户界面,请改用HTML service。
幸运的是,有一个教程“Converting from UiApp + Chart Service to Html Service + Google Visualization API”。
对于Google Apps脚本的用户,有两种可视化数据的方法:
- 继续使用图表+ UiApp 。虽然在编辑器中不推荐使用并且不支持自动完成,但UiApp仍然有效。没有声明它实际上会被关闭......但是。
- 遵循Google的建议,使用HtmlService 。 HtmlService支持的图表feature request已被拒绝。因此,这个看似简单的建议需要额外要求您使用Google的其他Charts offering,也称为Google Visualization API或GViz。
醇>
希望这有帮助