使用Google Apps脚本查询Google表格

时间:2016-01-17 16:03:33

标签: google-apps-script google-sheets

我已经构建了一个网络应用程序来跟踪组织内部的车辆使用情况。其中一个功能是该应用程序查看现有数据库(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字符串粘贴到浏览器窗口时,它工作正常,所以我知道它不是查询字符串本身的问题。

提前谢谢你。

1 个答案:

答案 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()是你编写的函数,它执行必要的剥离。