Google apps script 试图根据google表单的响应表创建dashbaord,这是
试图创建一个基于谷歌表单响应表的仪表板,这是我根据自己看过的教程所做的。。我有70多列,我正试图显示为饼图,我应该使用不同的方法来提取信息吗?我知道可能有不止一个错误,但这是我目前正在努力解决的问题: 对象类型与列类型不匹配。(第160行,文件“代码”,项目“历史部门仪表板”) 对于创建面板,您可以找到如何创建面板的示例以及必要的元素。您已经拥有了大多数必需的对象 在下面的代码中,我对示例进行了修改,使其与您拥有的类似,并且可能与您想要的类似 在获得完整的信息范围后,您可能只需要几列来构建图表。创建图表时,您使用函数Google apps script 试图根据google表单的响应表创建dashbaord,这是,google-apps-script,google-forms,Google Apps Script,Google Forms,试图创建一个基于谷歌表单响应表的仪表板,这是我根据自己看过的教程所做的。。我有70多列,我正试图显示为饼图,我应该使用不同的方法来提取信息吗?我知道可能有不止一个错误,但这是我目前正在努力解决的问题: 对象类型与列类型不匹配。(第160行,文件“代码”,项目“历史部门仪表板”) 对于创建面板,您可以找到如何创建面板的示例以及必要的元素。您已经拥有了大多数必需的对象 在下面的代码中,我对示例进行了修改,使其与您拥有的类似,并且可能与您想要的类似 在获得完整的信息范围后,您可能只需要几列来构建图表。
setDataViewDefinition()
,作为参数,然后添加了函数Charts.newDataViewDefinition().setColumns([0,1])
。在该函数中,您将从用于图表的数据范围中选择列。在本例中,我使用了第一列和第二列[0,1]
。
如果需要第一列和第三列,可以使用[0,2]
,依此类推
我还在变量栏中添加了一个简单的图表(没有过滤器)。对于该图表,我还定义了所需的列,并将其直接添加到UI对象中
如果您要创建大量图表,我建议使用for循环,这样您就不会得到一个庞大的脚本
希望这有帮助
function doGet() {
var ss = SpreadsheetApp.openById('1MjS2zr9cQVvkn7qi1CmRucVT5IacDFijHR_dRSjthnY');
var data = ss.getDataRange().getDataTable();
var chart = Charts.newBarChart()
.setTitle("Ages").setDataViewDefinition(Charts.newDataViewDefinition().setColumns([0,1]))
.build();
var stringFilter = Charts.newStringFilter()
.setFilterColumnIndex(0)
.build();
var numberRangeFilter = Charts.newNumberRangeFilter()
.setFilterColumnIndex(1)
.build();
var bars = Charts.newBarChart().setTitle('bar chart')
.setDataTable(data)
.setDataViewDefinition(Charts.newDataViewDefinition().setColumns([0,2]))
.build();
// Create a dashboard panel binding both controls to the chart.
var dashboard = Charts.newDashboardPanel()
.setDataTable(data)
.bind([stringFilter, numberRangeFilter], [chart])
.build();
var uiApp = UiApp.createApplication().setTitle("My Dashboard");
var panel = uiApp.createVerticalPanel().setSpacing(50);
panel.add(stringFilter);
panel.add(numberRangeFilter);
panel.add(chart);
dashboard.add(panel);
uiApp.add(dashboard);
uiApp.add(bars);
return uiApp;
}
是否尝试为每列添加图表?每次调用var pieChart时,您都在分配最新的值,因此在最后,该变量的值将仅为Charts.newPieChart().setDataViewDefinition(Charts.newDataViewDefinition().setColumns([81]),我起初是这样的,但现在我想我更愿意创建一个图表,每个列都有一个控件过滤器,这样图表就可以根据控件的参数进行更改。谢谢!我要试一试!
function doGet() {
var ss = SpreadsheetApp.openById('1MjS2zr9cQVvkn7qi1CmRucVT5IacDFijHR_dRSjthnY');
var data = ss.getDataRange().getDataTable();
var chart = Charts.newBarChart()
.setTitle("Ages").setDataViewDefinition(Charts.newDataViewDefinition().setColumns([0,1]))
.build();
var stringFilter = Charts.newStringFilter()
.setFilterColumnIndex(0)
.build();
var numberRangeFilter = Charts.newNumberRangeFilter()
.setFilterColumnIndex(1)
.build();
var bars = Charts.newBarChart().setTitle('bar chart')
.setDataTable(data)
.setDataViewDefinition(Charts.newDataViewDefinition().setColumns([0,2]))
.build();
// Create a dashboard panel binding both controls to the chart.
var dashboard = Charts.newDashboardPanel()
.setDataTable(data)
.bind([stringFilter, numberRangeFilter], [chart])
.build();
var uiApp = UiApp.createApplication().setTitle("My Dashboard");
var panel = uiApp.createVerticalPanel().setSpacing(50);
panel.add(stringFilter);
panel.add(numberRangeFilter);
panel.add(chart);
dashboard.add(panel);
uiApp.add(dashboard);
uiApp.add(bars);
return uiApp;
}