【发布时间】:2015-08-25 14:30:38
【问题描述】:
我刚开始学习 Google Apps 脚本/JavaScript,想知道如何重塑、操作来自 Google 电子表格的多维数据。我读过一些像this one 这样的帖子,说GAS 在数据操作方面不灵活。但是这篇文章有点过时了,所以我想知道 GAS 功能是否有任何新的更改/添加。
下面是开始的功能代码。它可以成功绘制出下面的图表。但我真正想要的是:
我尝试使用PIVOT B、GROUP BY dayOfWeek(toDate(A)),,但它返回了One or more participants failed to draw()× 错误消息或意外格式。
<html>
<head>
<title>
Test
</title>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {'packages': ['table', 'controls', 'corechart']});
google.setOnLoadCallback(initialize);
function initialize() {
var url = 'https://docs.google.com/spreadsheets/d/1_mSbT87MVWOiX2cfKX_x3dgTnToY5ulCWeGGCVn13iQ/gviz/tq?sheet=Sheet1&tq='
var queryStringDaily = encodeURIComponent("SELECT dayOfWeek(toDate(A)), sum(C), sum(D), sum(E), sum(F), sum(G), sum(H) GROUP BY dayOfWeek(toDate(A)) LABEL dayOfWeek(toDate(A)) 'Weekday' " );
var queryDaily = new google.visualization.Query(url+ queryStringDaily);
queryDaily.send(drawDaily);
}
function drawDaily(dailyTicket) {
//prepare data
var dailyTicket_table = dailyTicket.getDataTable(firstRowIsHeader = true);
// Create a dashboard.
var dashboard = new google.visualization.Dashboard(
document.getElementById('dashboard_div2'));
// Create a filter
var categoryFilter = new google.visualization.ControlWrapper({
'controlType': 'CategoryFilter',
'containerId': 'filter_div2',
'options': {
'filterColumnLabel': 'Weekday'
}
});
//create chart
var dailyChart = new google.visualization.ChartWrapper({
'chartType': 'LineChart',
'containerId': 'current_day',
'options': {
'title': 'Tickets by Rep, Item, and Weekday',
'legend': {position: 'right'},
//reformat x-axis tickmarks
'hAxis': {'viewWindow': {'min': 1.5, 'max': 6.5},
'ticks': [//{v: 1, f: 'Sunday'},
{v: 2, f: 'Monday'},
{v: 3, f: 'Tuesday'},
{v: 4, f: 'Wednesday'},
{v: 5, f: 'Thursday'},
{v: 6, f: 'Friday'},
//{v: 7, f: 'Saturday'}
]
},
}
});
// bind charts and controls to dashboard
dashboard.bind(categoryFilter, dailyChart);
// Draw the dashboard.
dashboard.draw(dailyTicket_table);
}
</script>
</head>
<body>
<!--Div that will hold the dashboard-->
<div id="dashboard_div2"></div>
<!--Divs that will hold each control and chart-->
<div id="filter_div2"></div>
<div id="current_day" style="align: center; width: 500px; height: 250px;"></div>
</body>
</html>
【问题讨论】:
标签: javascript google-apps-script google-sheets google-visualization