【发布时间】:2021-07-08 18:03:08
【问题描述】:
我正在构建一个网络应用程序,它是谷歌的图表时间线。我有一个脚本可以从谷歌表格中返回正确的数组。我想将此结果传递给特定位置的 HTML。我正在使用谷歌应用脚本。
function doGet(e) {
return HtmlService.createTemplateFromFile('timeline3').evaluate();
}
function useDataRange() {
var rows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
var test = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getRange(3, 7, rows.getLastRow(), 1).getValues();
test = test.slice(0,rows.getLastRow()-2);
JSON.stringify(test);
Logger.log(test);
return test;
}
这是我的 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
</head>
<body>
<script type="text/javascript">
google.charts.load('current', {'packages':['timeline']});
google.charts.setOnLoadCallback(getData);
function getData(){
return google.script.run.withSuccessHandler(drawChart).useDataRange();
}
function drawChart(arrayFromSheets) {
var container = document.getElementById('timeline-tooltip');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'President' });
dataTable.addColumn({ type: 'string', id: 'dummy bar label' });
dataTable.addColumn({ type: 'string', role: 'tooltip' });
dataTable.addColumn({ type: 'string', id: 'style', role: 'style' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });
dataTable.addRows(arrayFromSheets);
chart.draw(dataTable);
}
</script>
<div id="timeline-tooltip" style="height: 400px;"></div>
</body>
</html>
我正在尝试用我的数组填充 dataTable.addRows()。我查看了谷歌的文档,这应该可以。我只是不明白。请帮忙
这是我从 useDataRange 函数返回的数组示例:
[['Lady Gita' ,null , 'June 19 -26' , '#176BEF', new Date(2021, 6, 19) , new Date(2021, 6, 26)], ['Lady Gita' ,null , 'Jun 27 - Jul 11' , '#FF3E30', new Date(2021, 6, 27) , new Date(2021, 7, 11)]]
在控制台中搜索我得到这个: Console:
【问题讨论】:
-
我已经复制了你的脚本,问题可能是由于数组中的日期。传递时数组中的日期将采用以下格式:“Thu Apr 30 00:00:00 GMT-15:56 1789”。这纯粹是基于我的观察,但看起来 dataTable 将无法识别数组上的日期,因此无法识别图表。 Google Charts 中的所有示例文章/资源仅显示在 dataTable 上添加日期值时使用 JavaScript Date 类,例如“new Date(1789, 3, 30)”,并且看起来这是不可能的(至少对于 Google Chart)鉴于没有现有的在线指南。
-
您可以尝试的另一种选择是来自developers.google.com/chart/interactive/docs/… 的“从单独的电子表格创建图表”指南。
-
是的,使用上面提到的 Query 类...
-
嘿 Irvin 和 WhiteHate,谢谢你的回答。我会在我这样做时更新你:)
-
嘿,我真的不擅长查询,必须花时间学习它们。我用可行的解决方案更新了我的答案
标签: javascript html google-apps-script google-visualization