我已经构建了一个网络应用程序来跟踪组织内部的车辆使用情况。其中一个功能是该应用程序查看现有数据库(Google表格)以检查Start里程是否与最后的End里程相匹配。我这样做是使用Gviz和JavaScript中的查询。
不幸的是,这是在客户端完成的。由于精明的用户有可能查看源代码并访问Google表格,因此我想将其移至服务器端(在Google Script中)。这样,只有当查询从Google Script传递到客户端时,他们才会看到查询结果。下面的示例不是从我的Web应用程序中获取的,而是我正在使用Google Script从Google Script查询Google Sheet ...我知道如何将值从GS传递到客户端,所以我的主要问题是如何查询来自Google Script的Google表格。
function myFunction() {
//Google Sheet
var sourceSheetString = 'https://docs.google.com/spreadsheets/d/116J**SheetID**w844/gviz/tq?sheet=Sheet1&headers=1&tq=';
var query = 'select A,B where B = "Brown" order by A desc';
var queryString = sourceSheetString + query;
var response = UrlFetchApp.fetch(queryString);
var parsedResponse = JSON.parse(response.getContentText());
Logger.log(parsedResponse);
}
不幸的是,我的Google Apps域不允许在域外共享,因此我将无法共享文件等。
我已经在互联网上寻找解决方案,但最接近我可以找到我们的UrlFetchApp。这是我运行函数时得到的错误:
SyntaxError: Unexpected token: < (line 10 (var parsedResponse), file "Code")
当我将完整的url字符串粘贴到浏览器窗口时,它工作正常,所以我知道它不是查询字符串本身的问题。
提前谢谢你。
答案 0 :(得分:0)
正如@SandyGood所提到的,错误很可能是JSON解析错误。查看var response = UrlFetchApp.fetch(queryString);
行的原始回复。
我的猜测是它会包含类似
的内容 /*O_o*/
google.visualization.Query.setResponse(
后跟json数据,然后是尾随);
首先删除响应的无关部分,然后解析JSON。所以:
var response = UrlFetchApp.fetch(queryString);
var cleanedResponse = yourCleanFunction(response.getContentText());
var parsedResponse = JSON.parse(cleanedResponse);
yourCleanFunction()
是你编写的函数,它执行必要的剥离。