【发布时间】:2015-05-06 07:52:00
【问题描述】:
我正在尝试使用 HTML 可视化来显示图表,类似于 UiApp 的做法(现已弃用)。我找到了这个例子:
.gs
function doGet() {
return HtmlService.createTemplateFromFile('html')
.evaluate()
.setTitle('My WebApp')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
};
function doSomething() {
return SpreadsheetApp.openById("ABC123").getActiveSheet.getRange(1, 1).getValue;
};
.html
<html>
<script>
function onSuccess(A1) {
var value = A1
}
google.script.run.withSuccessHandler(onSuccess)
.doSomething();
</script>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {'packages':['corechart', 'controls']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var dashboard = new google.visualization.Dashboard(
document.getElementById('programmatic_dashboard_div'));
// We omit "var" so that programmaticSlider is visible to changeRange.
programmaticSlider = new google.visualization.ControlWrapper({
'controlType': 'NumberRangeFilter',
'containerId': 'programmatic_control_div',
'options': {
'filterColumnLabel': 'Donuts eaten',
'ui': {'labelStacking': 'vertical'}
}
});
programmaticChart = new google.visualization.ChartWrapper({
'chartType': 'PieChart',
'containerId': 'programmatic_chart_div',
'options': {
'width': 300,
'height': 300,
'legend': 'none',
'chartArea': {'left': 15, 'top': 15, 'right': 0, 'bottom': 0},
'pieSliceText': 'value'
}
});
var data = google.visualization.arrayToDataTable([
['Name', 'Donuts eaten', 'Gender'],
['Michael' , value, 'Male'],
['Elisa', 7, 'Female'],
['Robert', 3, 'Male'],
['John', 2, 'Male'],
['Jessica', 6, 'Female'],
['Aaron', 1, 'Male'],
['Margareth', 8, 'Female']
]);
dashboard.bind(programmaticSlider, programmaticChart);
dashboard.draw(data);
}
</script>
</head>
<body>
<div id="programmatic_dashboard_div" style="border: 1px solid #ccc">
<table class="columns">
<tr>
<td>
<div id="programmatic_control_div" style="padding-left: 2em; min-width: 250px"></div>
<div>
<button style="margin: 1em 1em 1em 2em" onclick="changeRange();">
Select range [2, 5]
</button><br />
<button style="margin: 1em 1em 1em 2em" onclick="changeOptions();">
Make the pie chart 3D
</button>
</div>
<script type="text/javascript">
function changeRange() {
programmaticSlider.setState({'lowValue': 2, 'highValue': 5});
programmaticSlider.draw();
}
function changeOptions() {
programmaticChart.setOption('is3D', true);
programmaticChart.draw();
}
</script>
</td>
<td>
<div id="programmatic_chart_div"></div>
</td>
</tr>
</table>
</div>
这工作得很好,但我不想自己输入数据,而是想从电子表格中提取数据。例如:
SpreadsheetApp.openById("ABC123").getActiveSheet.getRange(1, 1).getValue;
我尝试将那段代码放在脚本的开头、中间、几乎所有地方,但它似乎不起作用。任何想法如何实现这一目标?
提前致谢
【问题讨论】:
标签: javascript html charts google-apps-script google-visualization