使用谷歌应用程序脚本将服务器端数据表返回到客户端
Returning a serverside datatable to client with google App Script
我想将我在谷歌应用程序脚本中创建的带有电子表格数据的数据表返回给客户端。我使用successHandler来获取数据,并使用它来创建图表。我唯一的问题是我的数据为空。我似乎无法将数据表对象返回到客户端页面。
我需要把它发送到客户端,因为Google Apps脚本正在弃用UIApp函数,所以我需要客户端中的Google.visualization函数。
代码.gs
function doGet() { return HtmlService.createHtmlOutputFromFile('Index.html')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);}
function getDataTable()
{
var bestanden = DriveApp.searchFiles('title contains "' + "kwalrap" + '"');
while (bestanden.hasNext())
{
var bestand = bestanden.next();
var docid = ( bestand.getId() );
Logger.log(docid);
};
var sheets= SpreadsheetApp.openById(docid).getSheets();
//vanaf sheet 0. tot hij bij de laatset sheet is. dan steeds 2 sheets verder.
for(var j = 0; j < 2; j = j+1)
{
var sheet = sheets[j];
//Logger.log(sheet.getSheetName());
var range = sheet.getRange(2,1,sheet.getLastRow(),8);
var inforange = sheet.getRange(2,1,1,8);
var values = range.getValues();
var infovalues = inforange.getValues();
var data = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Tijd")
.addColumn(Charts.ColumnType.NUMBER, "dco")
.addColumn(Charts.ColumnType.NUMBER, "dcp")
.addColumn(Charts.ColumnType.NUMBER, "dct")
.addColumn(Charts.ColumnType.NUMBER, "dcz")
.addColumn(Charts.ColumnType.NUMBER, "ldc")
.addColumn(Charts.ColumnType.NUMBER, "lv")
for(var i = 0; i < sheet.getLastRow()-1; i++)
{
data.addRow([values[i][0],values[i][1],values[i][2],values[i][3],values[i][4],values[i][5],values[i][6]]);
Logger.log(values[i]);
}
var dataTable = data.build();
return dataTable;
// return JSON.stringify(values);
}
}
Index.html
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
function onSuccess(data) {
var options = {
title: 'Why doesn't this work'
};
new google.visualization.LineChart(
document.getElementById('visualization_div')).draw(data, options);
}
google.script.run.withSuccessHandler(onSuccess)
.getDataTable();
</script>
</head>
<body>
<div id="visualization_div" style="width: 600px; height: 380px;';"></div>
</body>
</html>
为什么我的数据变量在onSucceHandler中为null,以及如何在客户端中获取数据表
感谢您的帮助
这是因为您需要返回一个纯javascript数组,而不是一个纯服务器端对象的数据表。
相关文章:
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 从数据表中的角度$http.get返回一个值.js列的呈现函数
- 获取返回的数据表的大小(以像素为单位)
- 谷歌比较图表使用JSON数据表返回[给定轴上的所有系列必须具有相同的数据类型]
- 在数据表中返回 html.helper
- 从函数返回 YUI 数据表的参数
- 如何为数据表服务器端处理返回 JSON 对象
- 返回数据表输入字段
- 使用从 ajax servlet 调用返回的 json 更新数据表时出错
- 数据表.js - 始终返回一个空数组
- 什么结构应该在后端返回JSON,以传递每个数据表的值's列页脚
- JavaScript SDK返回数据表单嵌套函数
- Javascript数据表填充数据问题(没有返回错误)
- 初始化jQuery返回空白页的数据表
- SQL Server数据透视表返回视图(AngularJS)
- 制作jquery数据表来提取和使用从Rpc服务器返回的json的给定部分
- 数据表-返回搜索结果
- 使用谷歌电子表格作为JSON文件使用桌面到数据表返回错误
- 数据表(jQuery的表插件)在离开和返回数据表时继续您离开的地方
- Ajax返回的数据没有绑定jquery数据表插件