【发布时间】:2016-04-15 19:27:21
【问题描述】:
我有一个功能正常的谷歌网络应用程序,它与 [此处] 提供的应用程序相同
您会在 code.gs 中注意到,SpreadsheetApp.openByID......getRange().getValues() 用于检索稍后在 Dashboard-JavaScript.html 中转换为 DataTable 的 Array
工作代码.gs:
function doGet(e) {
var template = HtmlService.createTemplateFromFile('Index');
// Build and return HTML in IFRAME sandbox mode.
return template.evaluate()
.setTitle('Dashboard demo')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
/**
* Return all data from first spreadsheet as an array. Can be used
* via google.script.run to get data without requiring publication
* of spreadsheet.
* Returns null if spreadsheet does not contain more than one row.
*/
function getSpreadsheetData() {
var sheetId = '-key-';
var data = SpreadsheetApp.openById(sheetId).getSheets()[0].getRange("A1:D8").getValues();
return (data.length > 1) ? data : null;
}
我想使用 google.visualization.query 而不是 .getRange。
不起作用 - 当前返回未定义的“Google”
function doGet(e) {
var template = HtmlService.createTemplateFromFile('Index');
// Build and return HTML in IFRAME sandbox mode.
return template.evaluate()
.setTitle('Dashboard demo')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function getSpreadsheetData() {
var opts = {sendMethod: 'auto'};
var sheetId = '-key-';
var query = new google.visualization.Query('http://spreadsheets.google.com?key=' + sheetId, opts);
query.setQuery('select A, B, C, D');
query.send(draw)
}
function draw(response) {
if (response.isError()) {
alert('Error in query');
}
alert('No error')
}
我确定有几个问题 - 但我无法返回任何有用的错误来调试问题。
我的问题是:
- 是否可以在 code.gs 中使用 google.visualization.query? (我读过一篇文章让我相信它可能不能用于服务器端??/为什么)
- 如果是 - 如何避免“谷歌未定义”错误
- 如果没有 - 是否有从服务器端“查询”谷歌表格的替代方法(最终目标是在检索数据表时灵活地省略列、执行聚合函数等)。无法更改底层电子表格(即共享和发布)
最后,如果其中任何内容的格式不正确或不清楚,我深表歉意。这是我在这里的第一篇文章。此外,我在 javascript/apps 脚本和 google web 应用方面的经验和专业知识有限。
【问题讨论】:
标签: google-apps-script google-sheets google-visualization